接的遗留代码,在本地运行,有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就各种困难
/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 才可正常运行