所以我已经克隆了repo(https://github.com/techblue/jmagick),构建并将生成的两个文件复制到一个目录:
/路径/to/project/lib/jmagick-6.7.7.jar
/路径/to/project/lib/libJMagick-6.7.7.so
我还安装了最新的ImageMagick,由于我在OSX上,我使用了:
brew安装imagemagik
我有版本:imagemagick-6.9.3-6
当我运行我的应用程序并首次尝试实例化ImageInfo对象时,我得到以下异常:
java.lang.UnsisfiedLinkError:java.library.path 中没有JMagick
还有一点信息,我按照docker的说明在存储库中构建了代码,所以它是在ubuntu中构建的。我不知道这是不是个问题。我没有得到一个类未找到的异常,所以我不得不假设罐子是好的。我的java.library.path如下:
"java.library.path"->"/path/to/project/lib"
我快没主意了。
经过大量的挖掘(这确实应该有更好的记录),我开始运行了。
你必须在你将要使用的系统上构建它。如果它是osx,你可能(尽管我不确定这部分是必要的)需要将生成的.so文件的扩展名更改为.dylb.
正如我所说,您必须指定以下系统属性:
-Djava.library.path=/path/to/lib/file
该文件必须命名为libJMagick.so或libJMagick.dylib。Java的类加载器只查找System.loadLibrary的名称,并且该名称是jMagick jar中的jMagick。Lib是由类加载器预先准备的(我猜)。
我从未提到过的唯一一件事,现在会提到,以防其他人想知道我是如何将jMagic.jar添加到类路径的:
<dependency>
<groupId>jmagick</groupId>
<artifactId>jmagick</artifactId>
<version>6.7.7</version>
<scope>system</scope>
<systemPath>/path/to/jar/jmagick-6.7.7.jar</systemPath>
</dependency>
祝大家好运