Runnable JAR无法使用引用的库

时间:2012-04-19 15:31:19

标签: java eclipse jar executable executable-jar

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

从这question开始,第一个选项将是我正在寻找的选项。由于目前这是一个小项目,所以总是把所有东西放在一起并不是一个问题(而且对我来说更容易,因为我只是从JAR,runnables和jnlp开始)< / p>

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

如果我删除了对这个引用库的任何使用,那么一切都运行得很好(除了那部分它没有按照我想要的那样做)。窗口看起来就像我设计的那样,但没有库的功能。

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

由于我让Eclipse处理导出和所有内容,我不认为你需要清单来查看它是否正常。如果您有任何问题,我将提供您需要的信息。毫无疑问,该项目直接从Eclipse运行。

的Eclipse 版本:Indigo Service Release 2 构建ID:20120216-1857


修改Baqueta的回答

当我这样做时会发生什么,我得到一个自定义的RuntimeException。我在这里有点困惑。这是我的代码的简单解释。 我有一个使用引用库(jackson)的实用程序类(UtilityJSON)。该实用程序类的构造函数实例化引用库中定义的对象,让它称之为映射器。 UtilityJSON的方法使用&#39; mapper&#39;的方法。此时引发异常。为什么我感到困惑的是“映射器”#39;已成功实例化,但使用其方法会引发异常。如果jar无法找到引用的库,则可能无法创建对象&#39; mapper&#39;。但是从Eclipse运行项目一切都很好。 运行可执行jar时有没有办法调试?也许在控制台中回应一些东西。


修改2

我可能发现了错误。我的程序读取项目内文件夹中的* .txt文件。在探索jar的内容时,我看到该文件夹​​未包含在内,因此异常。所以问题现在变成:我如何包含这个文件夹?它位于项目的根文件夹中。

2 个答案:

答案 0 :(得分:4)

您可以尝试以下方法:

  1. 在Eclipse中,转到Project-&gt; Properties。
  2. 从左侧的列中选择“Java Build Path”。
  3. 选择“订购和导出”标签。
  4. 在列表中找到'jackson'并确保已选中。
  5. 修改 要回答您更新的问题:

    在Eclipse中,在Package Explorer中找到* .txt文件。右键单击它并选择Build Path-&gt; Add to Build Path。然后按照上面的说明确保文件包含在Jar中。最后,做一个干净的重建。

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

答案 1 :(得分:1)

通过编写

启用java控制台
javaws -viewer

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