【问题标题】:export runnable jar file using external libraries使用外部库导出可运行的 jar 文件
【发布时间】:2016-02-24 09:55:39
【问题描述】:

我使用两个外部库构建应用程序,第一个库是 opencv,第二个是 swt 我完成了应用程序,它在 Eclipse 中工作正常我更改为 jar 文件它不起作用然后我更改加载的函数 jar 文件来自:

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

System.load("/Users/AbdallahRizk/Documents/opencv/opencv-2.4.11/build/lib/libopencv_java2411.dylib");

注意:我使用的是mac操作系统。

然后我再次导出 jar 文件并使用命令:

java -XstartOnFirstThread -jar here.jar

因为我应用了 swt 库。 jar 文件在我的笔记本电脑中完美运行。 但是一旦我在ubuntu和windows等操作系统中尝试了它就不起作用了,我收到了以下错误:

我知道在 Windows 中不需要 -XstartOnFirstThread,但我都尝试了,但仍然收到相同的错误。我还没有在另一个 mac 操作系统中尝试过,但我确定它不会工作,因为加载的 opencv 库将不可用,所以我试图将所有外部库打包到我的 jar 文件中以独立工作在 ubuntu 和 windows 和 mac os x 中。

根据我的研究,有一种使用 maven 的方法。现在我正在使用普通的 eclipse 项目,所以有什么建议如何使用 eclipse 创建 maven 项目并导出包含所有库的 jar 文件?

【问题讨论】:

  • 我快速检查了“XstartOnFirstThread”。您可能想阅读以下内容:stackoverflow.com/questions/28149634/… 看起来有点像这是一个仅限 OSX 的选项,即不适用于 Windows 或 Linux 虚拟机。
  • 您替换 System.load 仅适用于库具有完全相同路径的系统。这很可能不会在生产环境中发生。
  • @penguineer 我知道这就是为什么我问是否有任何其他建议我可以在 jar 文件中添加库并更改要从 jar 中修复的路径它是 self

标签: java eclipse maven opencv jar


【解决方案1】:

错误输出是因为应用程序是在eclipse上开发并在mac平台上导出所以它不起作用因为swt依赖于一个平台所以为了解决这个问题我不得不重新编译所有东西并导出jar文件在 windows 上使用 eclipse 以两个 jars 文件结束,一个用于 mac,另一个用于 windows。

第二次发出我在函数中构建的opencv库,询问windows的dll文件或opencv的dylib文件,以便使用此命令加载库

          System.load(dll_path);

其中 dll_path 是一个字符串类型,用户会在每次运行时作为选择器来选择 dll 或 dylib 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2012-11-23
    • 2014-05-06
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多