我想创建一个可运行的 JAR,其中包含引用的库,即jackson http://jackson.codehaus.org/,在 Eclipse 中通过导出。过去有fat jar这似乎是 Eclipse 提供导出到可运行 JAR 之前的 goto 解决方案。
由此question https://stackoverflow.com/questions/8302894/what-is-the-difference-between-runnable-jar-library-handling-options,第一个选项就是我正在寻找的。由于目前它是一个小项目,因此将所有内容放在一起不会有问题(而且这对我来说更容易,因为我刚刚开始使用 JAR、runnables 和 jnlp)
当我尝试启动它时,会出现一个警报窗口,提示存在问题并尝试在控制台中找到它(我无法打开)。
如果我删除对此引用库的任何使用,一切都会完美运行(除了它根本没有执行我想要的操作的部分)。该窗口看起来像我设计的那样,但如果没有库就没有任何功能。
我什至没有堆栈跟踪来帮助解决问题。我创建了其他项目,没有任何引用的库,一切都很好。所以我已经缩小了范围。
因为我让 Eclipse 处理导出和所有事情,所以我认为您不需要清单来查看它是否正常。如果您有任何疑问,我会提供您需要的信息。不用说,该项目直接从 Eclipse 运行。
蚀
版本:Indigo 服务版本 2
内部版本号:20120216-1857
编辑以下内容Baqueta https://stackoverflow.com/users/213727/baqueta的回答
当我这样做时会发生什么,我得到一个自定义的 RuntimeException。我在这里有点困惑。这是我的代码的简单解释。
我有一个实用程序类(UtilityJSON),它使用引用的库(jackson)。该实用程序类的构造函数实例化引用库中定义的对象,我们将其称为映射器。
UtilityJSON的方法使用“映射器”的方法。此时引发异常。我感到困惑的原因是“映射器”已成功实例化,但使用其方法会引发异常。如果 jar 找不到引用的库,它可能无法创建对象“映射器”。但从 Eclipse 运行该项目一切正常。
运行可执行 jar 时有什么方法可以调试吗?也许会在控制台中回显一些内容。
Edit 2
我可能已经发现了错误。我的程序读取项目内文件夹中的 *.txt 文件。当探索 jar 的内容时,我发现不包含该文件夹,因此出现异常。所以现在的问题是:如何包含这个文件夹?它位于项目的根文件夹中。