5

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

从这个问题,第一个选择就是我要找的。由于目前是一个小项目,因此始终将所有内容放在一起不会成为问题(另外,这对我来说更容易,因为我刚开始使用 JAR、runnables 和 jnlp)

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

如果我删除对这个引用库的任何使用,一切都会完美运行(除了它根本没有做我想要的部分)。窗口看起来像我设计的那样,但是没有库就没有功能。

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

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

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


按照Baqueta的回答进行编辑

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


编辑 2

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

4

2 回答 2

4

您可以尝试以下方法:

  1. 在 Eclipse 中,转到项目-> 属性。
  2. 从左侧的列中选择“Java Build Path”。
  3. 选择“订购和导出”选项卡。
  4. 在列表中找到“jackson”并确保它已被选中。

编辑 回答您更新的问题:

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

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

于 2012-04-19T16:23:37.217 回答
1

通过编写启用 java 控制台

javaws -viewer

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

于 2012-04-19T15:39:32.263 回答