2012-04-19 45 views
4

我想通过导出在eclipse中创建一个可运行的JAR,其中包含引用的库,即jackson。曾经有胖罐子这似乎是Eclipse提供的导出到可运行JAR之前的goto解决方案。Runnable JAR不能与引用库一起工作

从这question,第一个选项将是我正在寻找。由于它目前是一个小型项目,因此总是把所有东西放在一起并不是一个问题(加上它对我来说更简单,因为我只是从JAR,可运行的程序和jnlp开始)

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

如果我删除这个引用的库的任何使用,一切都运行完美(除非它没有做我想要的部分)。窗户看起来像我设计的方式,但没有图书馆没有功能。

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

因为我让Eclipse处理导出和所有事情,所以我不认为你需要清单来查看它是否正常。如果您有任何问题,我会提供您需要的信息。不言而喻,该项目直接从Eclipse运行。

的Eclipse 版本:靛蓝服务发布2 版本ID:20120216-1857


编辑以下Baqueta的回答

什么时候我做的情况是,我得到一个定制RuntimeException的。我在这里有点困惑。这是我的代码的简单解释。 我有一个实用工具类(UtilityJSON),使用引用的库(杰克逊)。该实用程序类的构造函数实例化在引用的库中定义的对象,我们称之为mapper。 UtilityJSON的一种方法使用'mapper'的方法。此时引发异常。为什么我感到困惑的是'映射器'成功实例化,但使用它的方法引发了一个异常。如果jar无法找到引用的库,则可能无法创建对象'mapper'。但从Eclipse运行项目都很好。 运行可执行文件jar时有什么办法可以调试吗?也许在控制台中回应一些东西。


编辑2

我可能已经发现的错误。我的程序在项目内的文件夹中读取* .txt文件。当探索jar的内容时,我发现这个文件夹没有包含在内,因此是例外。所以现在的问题变成:我如何包含这个文件夹?它位于项目的根文件夹中。

+0

当您尝试运行Jar时,您会收到什么错误消息?转到命令提示符并输入'java -jar <你的jar名> .jar',它应该告诉你发生了什么问题...... – vaughandroid 2012-04-20 08:16:06

+0

嘿,那里,对不起,我错过了你的答案。请参阅我的编辑。 – Chamane 2012-04-23 13:04:44

+0

从我收集你试图从资源管理器启动它,它听起来像它即将开始控制台之前即将死亡。从命令行启动它可能会获得更多信息。以cmd(或等同于)包含jar的文件夹并键入'java -jar .jar'。它会希望给你一些有用的信息,为什么它不能启动... – vaughandroid 2012-04-23 13:14:52

回答

3

你可以尝试以下方法:

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

编辑 要回答你的问题更新:

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

如果你曾经打算增加更多的资源,这是常见的做法(和有意义!)有一个资源文件夹(通常被称为“资源”)。然后,您可以将整个文件夹添加到构建路径,以便其中的所有资源都包含在Jar中。

+0

它没有被检查。试过了,仍然不起作用。我已经尝试了导出可运行的前两个选项。 – Chamane 2012-04-19 16:28:06

+0

是的,我会尽快选择正确的答案。确实有一个资源文件夹是有意义的。我创建了一个并将所有内容都移动到那里我更新了用于打开文件的路径,并且所有JUnit都成功了。已将“rsc”添加到Build Path中,但该jar仍未运行,说该文件无法打开(没有此文件或目录)。我显然很接近它的工作。所以一旦它发生,我会解决这个问题。 – Chamane 2012-04-23 16:25:11

+0

非常感谢,现在一切正常。我不得不使用[this](http://stackoverflow.com/questions/2671796/how-to-include-text-files-with-executable-jar),尽管我现在还不知道为什么。为了使它工作,我还必须直接在使用它们的包中移动我的* .txt文件,这是非常可怕的。肯定有另一种解决方案,我会继续寻找。至于包含引用的库,一切都很好。再次感谢你。 – Chamane 2012-04-23 17:32:49

1

通过在终端中编写

javaws -viewer 

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

+0

不知道命令行来打开Java首选项,但我已经激活它。一旦选择了该单选按钮,下次尝试运行我的程序时应该打开控制台,但它不会。只是警报窗口说它无法打开。 – Chamane 2012-04-19 15:55:02

+0

你得到的错误对话框的消息是什么? – Stefan 2012-04-19 16:02:04

+0

不知道法语的确切翻译,但它是这样的:“不可能启动文件Test.jar”。在控制台中搜索潜在的错误消息。 – Chamane 2012-04-19 16:28:21