首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使JMagick工作

无法使JMagick工作
EN

Stack Overflow用户
提问于 2014-12-04 13:15:59
回答 1查看 4.5K关注 0票数 4

我对JMagick库有个奇怪的问题。我使用Debian,所以我安装了libjmagick6-java和libjmagick6-jni,下面是我完成的步骤:

  • 我把jmagick-6.6.9.jar/usr/share/java/抄到了$JAVA_HOME/jre/lib/ext/
  • 我已将/usr/lib/jni (where libJMagick.so)设置为:中的本机库位置
    • JRE系统库(在eclipse中)
    • jmagick-6.6.9.jar (在eclipse中)

我还在简单的Java项目中测试了JMagick,它在那里工作,但是在运行在Tomcat 6中的web应用程序的第二个项目中,它只是不能工作。

下面是工作的代码,所以必须正确安装jmagick:

代码语言:javascript
复制
public class Main {
    public static void main(String[] arg) {
        MagickImage image = null;
        ImageInfo imageInfo = null;

        try {
            imageInfo = new ImageInfo("/home/firzen/IMG_0120.JPG");
            image = new MagickImage(imageInfo);
            System.out.println(image.getDimension().width);
        } catch (MagickException e) {
                System.out.println(e);
        }
        image.destroyImages();
    }
}

这是webapp中的代码,它是不工作的

代码语言:javascript
复制
public void init() {        
    ServletContext sc = getServletContext();
    cacheHandlers = (Map<String, CacheContext>) sc.getAttribute("handlers");
    Boolean applicationReady = (Boolean) sc.getAttribute("ready");
    isReady = cacheHandlers != null && Boolean.TRUE.equals(applicationReady);

    System.out.println("zde");
    MagickImage image = null;
    ImageInfo imageInfo = null;

    try {
        imageInfo = new ImageInfo("/home/firzen/IMG_0120.JPG");
        image = new MagickImage(imageInfo);
        System.out.println(image.getDimension().width);
    } catch (MagickException e) {
            System.out.println(e);
    }
    image.destroyImages();
}

最后,这里是上述代码引发的异常:

代码语言:javascript
复制
java.lang.UnsatisfiedLinkError: no JMagick in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at magick.Magick.<clinit>(Magick.java:18)
    at cz.bach.mrimage.MrImageSrv.init(MrImageSrv.java:44)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

请告诉我一些解决这个问题的方法。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 11:24:05

通过使用以下代码检查真实的java.library.path,我终于解决了这个问题:

代码语言:javascript
复制
System.out.println("java.library.path is: " + System.getProperty("java.library.path"));

这让我一团糟:

代码语言:javascript
复制
java.library.path is: /opt/jdk1.7.0_45/jre/lib/i386/server:/opt/jdk1.7.0_45/jre/lib/i386:/opt/jdk1.7.0_45/jre/../lib/i386:/usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386/client:/usr/lib/jvm/java-6-openjdk-i386/jre/lib/i386::/usr/java/packages/lib/i386:/lib:/usr/lib

最后,您可以看到/usr/lib,因此我通过以下方法在/usr/lib中创建了指向libJMagick.so的链接:

代码语言:javascript
复制
ln -s /usr/lib/jni/libJMagick.so /usr/lib/libJMagick.so

享受!:-)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27295015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档