从相对路径加载Java库

时间:2014-08-28 13:37:09

标签: java

我编写了一个使用OpenCV库的Java程序。到目前为止,我使用eclipse执行程序(并在eclipse属性中设置Jar位置)。

这是一个大学最终项目。我的导师现在想在他的电脑上运行程序。如何生成一个可运行的jar(使用Ant或使用Java代码),它将从特定位置(将位于可执行Jar目录中的目录)加载Java OpenCV jar,这将适用于Linux和Windows(我理解为linux使用Jar文件,Windows使用dll文件)?

我尝试过使用:

String currentDir = System.getProperty("user.dir");
System.load(currentDir + "/path_to_jar/opencv-248.jar");

(让我们忽略它只适用于linux的事实)但是当执行jar时,会发生以下错误:

  

OpenJDK 64位服务器VM警告:您已加载库/path_to_jar/opencv-248.jar,它可能已禁用堆栈保护。 VM将尝试立即修复堆栈防护。   强烈建议您使用'execstack -c'修复库,或将其与'-z noexecstack'链接。   线程“main”中的异常java.lang.UnsatisfiedLinkError:/path_to_jar/opencv-248.jar:/path_to_jar/opencv-248.jar:无效的ELF头(可能的原因:字节序不匹配)

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

对java可执行文件使用classpath选项。

如果您正在运行OpenJDK,请阅读http://linux.die.net/man/1/java-java-1.6.0-openjdk

上的联机帮助页

你应该能够使用以下内容: java -jar yourapp.jar -cp ./path_to_jar/

另一个选择是构建一个包含自己的依赖项的JAR。以下是我使用搜索术语找到的一些示例" java create jar include dependencies":

Using Maven

Using Eclipse

相关问题