【问题标题】:Eclipse doesn't recognize a jar I created with One-JAREclipse 无法识别我使用 One-JAR 创建的 jar
【发布时间】:2012-03-23 10:45:19
【问题描述】:

所以我用 main 方法编写了一个类,该类依赖于另一个依赖于许多 jar 文件的 jar 文件。为了让事情更简单,我使用了 One-JAR 并创建了一个可执行的 jar。 我创建的 jar 很好,我可以运行它:

java -jar foo.jar 

这成功执行了我的主应用程序。

接下来,我在 Eclipse 中创建了一个新项目,并通过“添加外部 jars”将 foo.jar 添加到构建路径(我一直这样做,它总是有效)。出于某种原因,在我的 Eclipse 项目中,它抱怨它无法识别从 foo.jar 导入的包。

我查看了以前关于 Eclipse 的 jar 问题的问题,但没有任何帮助。我怀疑这与 One-Jar 创建的树有关,但由于命令行中的“java -jar foo.jar”工作正常,我不明白为什么 Eclipse 看不到类文件。

谢谢!

更新: 下面是 One-Jar 创建的 foo.jar 的样子:

META-INF     OneJar.class com          doc          lib          main

内部主要:

main     main.jar

在这个主目录中,我的应用程序的包树带有 .class 文件。现在,如果我在 Eclipse 中包含“main.jar”,它会识别我的应用程序。但是它无法识别 lib/ 下的其他依赖项,因此它会引发运行时异常。

更新 2: 所以 One-jar 和 Eclipse 的问题并没有解决,但是有人提到了 fat jar Eclipse 插件,所以我尝试了一下,它完美地完成了工作。它生成的 jar 同时适用于 Eclipse 和 Maven。它们实际上也支持 One-Jar,您可以在创建 jar 时检查 One-Jar 选项。我没有使用它,但它就在那里(如果它有效,它实际上值得使用,因为它应该处理库冲突)。 谢谢您的帮助。

【问题讨论】:

  • one-jar 创建的 jar 只是一个包含类的 jar。
  • 对。但是假设我的包是 com.example.main 然后它将 .class 文件放在: main/main/com/example/main/
  • 哦,我明白你在说什么。我认为这样做是为了避免冲突,类似于着色的工作原理——不确定 one-jar 是否有非修饰选项。

标签: java eclipse jar


【解决方案1】:

Eclipse 无法理解 jars 中的 jars。最好包含其他jar来单独构建路径。

【讨论】:

  • 试图包含 foo.jar 和 main.jar 已编译但由于其他 jar 依赖关系而无法在运行时工作。我可以单独添加所有其他罐子,这会起作用,但我试图避免它。这就是我使用 One-Jar 的原因,它可以像 Eclipse 一样通过命令工作,但不能通过 Eclipse。
  • 好的,您是否有任何具体原因要避免它。因为这是将依赖 jar 添加到构建路径的常用方法。如果您想将所有内容捆绑到一个 jar 中,那么您可以解压缩所有类文件并将它们捆绑在一个 jar 中。听起来可能很愚蠢:)。但我想不出其他方法……
  • 使用一个jar更方便,也更容易运送给其他人。而且,One-Jar 应该解决依赖冲突(例如,我的应用程序使用公共库 3.4,而我依赖的库之一使用公共库 2.4)。 One-Jar 应该可以遮蔽它。
  • 刚刚在 Eclipse 中查看了 FatJar。希望这与您正在寻找的内容相似fjep.sourceforge.net
  • 感谢@tsatiz,FatJar 完成了这项工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多