[英]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的内容时,我发现不包含此文件夹,因此是一个例外。 因此,现在的问题变成了:如何包含此文件夹? 它在项目的根文件夹中。
您可以尝试以下方法:
编辑要回答您的更新问题:
在Eclipse中,在Package Explorer中找到* .txt文件。 右键单击它,然后选择“构建路径”->“添加到构建路径”。 然后按照上述说明操作,以确保文件包含在Jar中。 最后,进行清理并重建。
如果您打算添加更多资源,则通常有一个资源文件夹(通常称为“ res”)(这很有意义!)。 然后,您可以将整个文件夹添加到构建路径,以便其中的所有资源都包含在Jar中。
通过编写来启用Java控制台
javaws -viewer
在一个终端。 关闭“缓存查看器”,然后单击“高级”选项卡。 打开Java控制台,然后单击“启用控制台”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.