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  才可正常运行  

原文地址:https://www.cnblogs.com/shenguanpu/p/3230608.html