zoukankan      html  css  js  c++  java
  • ImageMagick and JMagick install on Mac OSX

    接的遗留代码,在本地运行,有jmagick-6.4.0.jar 但是出现错误:

    javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class magick.ImageInfo

    main里新建一个ImageInfo 则出现错误:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no JMagick in java.library.path

    按照坑爹的官方文档根本装不上

    按照github有个哥们儿写的wiki:  (https://gist.github.com/kei2100/4688805)

    1、先装了brew,装了两次才装上  ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

    Homebrew的原则与port恰恰相反,它尽可能地利用系统自带的各种库,使得软件包的编译时间大为缩短;同时由于几乎不会造成冗余,软件包的管理也清晰、灵活了许多。Homebrew的另一个特点是使用Ruby定义软件包安装配置(叫做formula),定制非常简单。

    2、brew install imagemagick --disable-openmp

    imagemagick安装也顺利

    3、安装jmagick就各种困难

    wget http://downloads.jmagick.org/6.4.0/jmagick-6.4.0-src.tar.gz
     
    tar xfz jmagick-6.4.0-src.tar.gz
    mv 6.4.0 jmagick-6.4.0
    cd jmagick-6.4.0
     
    ./configure --with-java-home=/System/Library/Frameworks/JavaVM.framework/Versions/Current --with-magick-home=/usr/local/Cellar/imagemagick/6.7.1-1/
     首先是默认的osx jdk里不含 include目录导致无法加载jni.h ,于是从测试环境服务器 include 包 整个压缩下来放到本地  magick-home 找对位置, ok, configure通过
    4、make错误 :
    ../../Make.rules:175: *** missing separator.  Stop.
    解决方案:
    On line 175 and 176 of the Make.rules file, there are 4 spaces at the start of the line instead of a tab - replace the spaces with a tab and make will succeed.
    很坑爹,这个错误也没人反馈没人改
     
    安装成功

    /usr/bin/install -c -d /usr/local/lib
    /bin/sh /data1/xindong-dev/installer/jmagic/6.4.0/libtool --mode=install /usr/bin/install -c /data1/xindong-dev/installer/jmagic/6.4.0/lib/libJMagick-6.4.0.so /usr/local/lib
    /usr/bin/install -c /data1/xindong-dev/installer/jmagic/6.4.0/lib/libJMagick-6.4.0.so /usr/local/lib/libJMagick-6.4.0.so

    如果有libJMagick-6.4.0.so是否可以直接放到lib目录?

    -rwxr-xr-x 1 root admin 125K 8 1 17:26 libJMagick-6.4.0.so
    lrwxr-xr-x 1 root admin 21B 8 1 17:26 libJMagick.so -> ./libJMagick-6.4.0.so

    5、 ln

    sudo ln -s /usr/local/lib/libJMagick.so /Library/Java/Extensions/libJMagick.jnilib

    6、检验

    java一般使用两个path:classpath 和 java.library.path

    classpath是指向jar包的位置

    java.library.path是非java类包的位置如(dll,so)

    在IDEA里发现仍出现错误 在run 的 vm option设置  -Djava.library.path=/usr/local/lib/

    出错:Exception in thread "main" java.lang.UnsatisfiedLinkError: no JMagick in java.library.path

    更改为  -Djava.library.path=/Library/Java/Extensions/    或者 /etc/profile 加入: export PATH=$PATH:/Library/Java/Extensions/

     正常运行

    在tomcat中 首先/etc/profile 设置PATH  export PATH=$PATH:/Library/Java/Extensions/

    catalina.sh 加入-Djmagick.systemclassloader=no  才可正常运行  

  • 相关阅读:
    红黑树实现
    Java环境变量的配置及意义
    Java 内存分配全面浅析
    吸血鬼数字
    nat模式、路由模式,网桥模式
    WebService 的创建,部署和使用
    摩尔定律
    计算机组成
    世界是数字的
    面试
  • 原文地址:https://www.cnblogs.com/shenguanpu/p/3230608.html
Copyright © 2011-2022 走看看