linux系统版本以及jdk版本:
Plain Text code
??12345678 [root@hosta imageprocess]# uname -a Linux hosta.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux [root@hosta imageprocess]# java -version java version "1.6.0_30" Java(TM) SE Runtime Environment (build 1.6.0_30-b12) Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode) [root@hosta imageprocess]#
imagemagick 以及jmagick安装正常,应用服务器为weblogic10.3
jmagick用源码使用上述JDK进行编译后生成了jmagick-6.4.0.jar/libJMagick-6.4.0.so/libJMagick.so三个文件,其中jmagick-6.4.0.jar放到项目中使用了,在windows下运行正常,在linux下运行,报错java.lang.UnsatisfiedLinkError: no JMagick in java.library.path.
于是打出java.library.path如下:
/usr/java/jdk1.6.0_30/jre/lib/amd64/server:/usr/java/jdk1.6.0_30/jre/lib/amd64:/usr/java/jdk1.6.0_30/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
将libJMagick.so文件拷贝置/usr/lib下,重新启动工程,使用该功能时则报错如下:
java.lang.UnsatisfiedLinkError: /usr/lib/libJMagick.so: /usr/lib/libJMagick.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
目前来看,系统是64位的,libJMagick.so也是使用源码用64位的JDK编译出来的,请问该如何解决?
另:单独写了个java文件测试,使用javac编译然后java命令运行,则运行正常
import magick.MagickException;
import magick.MagickImage;
public class ProcessImg {
public static void resize1(String picFrom, String picTo) {
try {
ImageInfo info = new ImageInfo(picFrom);
MagickImage image = new MagickImage(new ImageInfo(picFrom));
MagickImage scaled = image.scaleImage(100, 86);// 小图片文件的大小.
scaled.setFileName(picTo);
scaled.writeImage(info);
} catch (MagickApiException ex) {
} catch (MagickException ex) {
}
}
public static void main(String[] arg) {
System.setProperty("jmagick.systemclassloader", "no");
ProcessImg.resize1("/home/app/imageprocess/pic/a.jpg", "/home/app/imageprocess/pic/b.jpg");
}
}