繁体   English   中英

可运行的JAR无法与引用的库一起使用

[英]Runnable JAR not working with referenced libraries

我想通过导出在eclipse中创建一个包含引用的库,即jackson的可运行JAR。 在Eclipse提供将其导出到可运行的JAR之前,曾经有一个胖子似乎是goto解决方案。

从这个问题出发,第一个选择就是我要寻找的东西。 既然这是一个小项目,那么将所有内容始终在一起将不是问题(另外,因为我只是从JAR,runnables和jnlp开始,这对我来说比较容易)

当我尝试启动它时,会出现一个警告窗口,提示存在问题并尝试在控制台中找到它(我无法打开它)。

如果我删除了对这个引用库的任何使用,那么一切都将运行完美(除了那部分根本没有实现我想要的功能)。 该窗口的外观与我设计的方式相同,但是没有该库就没有任何功能。

我什至没有堆栈跟踪来解决问题。 我创建了其他项目,但没有任何引用的库,一切都很好。 所以我几乎缩小了范围。

由于我让Eclipse处理导出和所有操作,因此我不认为您需要清单来查看它是否正确。 您可能有任何疑问,我会提供所需的信息。 不用说,该项目直接从Eclipse运行。

Eclipse版本:Indigo Service Release 2内部版本:20120216-1857


根据Baqueta的答案进行编辑

当我这样做时会发生什么,就是得到一个自定义RuntimeException。 我在这里有点困惑。 这是我的代码的简单说明。 我有一个使用引用的库(杰克逊)的实用程序类(UtilityJSON)。 该实用工具类的构造函数实例化在引用的库中定义的对象,我们称之为映射器。 UtilityJSON的方法使用'mapper'的方法。 在这一点上引发了异常。 我感到困惑的是,成功映射了“映射器”,但使用其方法会引发异常。 如果jar无法找到引用的库,则可能无法创建对象“映射器”。 但是从Eclipse运行项目就可以了。 运行可执行jar时,有什么方法可以调试? 也许在控制台中回显某些内容。


编辑2

我可能已经找到错误。 我的程序读取项目内部文件夹中的* .txt文件。 在浏览jar的内容时,我发现不包含此文件夹,因此是一个例外。 因此,现在的问题变成了:如何包含此文件夹? 它在项目的根文件夹中。

您可以尝试以下方法:

  1. 在Eclipse中,转到Project-> Properties。
  2. 从左侧的列中选择“ Java构建路径”。
  3. 选择“订单和导出”标签。
  4. 在列表中找到“杰克逊”,并确保已选中。

编辑要回答您的更新问题:

在Eclipse中,在Package Explorer中找到* .txt文件。 右键单击它,然后选择“构建路径”->“添加到构建路径”。 然后按照上述说明操作,以确保文件包含在Jar中。 最后,进行清理并重建。

如果您打算添加更多资源,则通常有一个资源文件夹(通常称为“ res”)(这很有意义!)。 然后,您可以将整个文件夹添加到构建路径,以便其中的所有资源都包含在Jar中。

通过编写来启用Java控制台

javaws -viewer

在一个终端。 关闭“缓存查看器”,然后单击“高级”选项卡。 打开Java控制台,然后单击“启用控制台”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM