我想通过导出在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的内容时,我看到该文件夹未包含在内,因此异常。所以问题现在变成:我如何包含这个文件夹?它位于项目的根文件夹中。
答案 0 :(得分:4)
您可以尝试以下方法:
修改强> 要回答您更新的问题:
在Eclipse中,在Package Explorer中找到* .txt文件。右键单击它并选择Build Path-&gt; Add to Build Path。然后按照上面的说明确保文件包含在Jar中。最后,做一个干净的重建。
如果您要添加更多资源,通常的做法(并且有意义!)有一个资源文件夹(通常称为“res”)。然后,您可以将整个文件夹添加到构建路径中,以便其中的所有资源都包含在Jar中。
答案 1 :(得分:1)
通过编写
启用java控制台javaws -viewer
在终端。关闭缓存查看器,然后单击高级选项卡。打开Java-Console并单击“启用控制台”。