Java 日食不';我不认识我用一个罐子做的罐子
所以我用main方法编写了一个类,这个类依赖于另一个jar文件,这个jar文件依赖于许多jar文件。为了使事情更简单,我使用了一个JAR并创建了一个可执行JAR。 我创建的jar很好,我可以运行它:Java 日食不';我不认识我用一个罐子做的罐子,java,eclipse,jar,Java,Eclipse,Jar,所以我用main方法编写了一个类,这个类依赖于另一个jar文件,这个jar文件依赖于许多jar文件。为了使事情更简单,我使用了一个JAR并创建了一个可执行JAR。 我创建的jar很好,我可以运行它: java -jar foo.jar 这将成功执行我的主应用程序 接下来,我在Eclipse中创建了一个新项目,并通过“addexternaljars”将foo.jar添加到构建路径中(我一直都在这样做,而且总是有效)。出于某种原因,在我的Eclipse项目中,它抱怨它无法识别从foo.jar导入
java -jar foo.jar
这将成功执行我的主应用程序
接下来,我在Eclipse中创建了一个新项目,并通过“addexternaljars”将foo.jar添加到构建路径中(我一直都在这样做,而且总是有效)。出于某种原因,在我的Eclipse项目中,它抱怨它无法识别从foo.jar导入的包
我查看了以前关于Eclipse的jar问题的问题,但没有一个是有用的。我怀疑这与Jar创建的树有关,但由于命令行中的“java-Jar foo.Jar”工作正常,我不理解Eclipse为什么看不到类文件
谢谢
更新:
下面是由一个jar创建的我的foo.jar的样子:
META-INF OneJar.class com doc lib main
内干管:
main main.jar
在这个主目录中,我的应用程序的包树包含.class文件。现在,如果我在Eclipse中包含“main.jar”,它确实可以识别我的应用程序。但是它无法识别lib/下的其他依赖项,因此会抛出运行时异常
更新2:
所以一个jar和Eclipse的问题没有解决,但是有人提到了胖jar Eclipse插件,所以我尝试了它,它完美地完成了工作。它生成的jar与Eclipse和Maven一起工作。它们实际上也支持一个Jar,您可以在创建Jar时检查One-Jar选项。我没有使用它,但它就在那里(如果它有效的话,它确实值得使用,因为它应该处理库冲突)。
谢谢你的帮助 Eclipse将无法理解jar中的jar。最好将其他jar单独包含在构建路径中。一个jar创建的jar只是一个包含类的jar。对。但是假设我的包是com.example.main,然后它将.class文件放在main/main/com/example/main/Oh下,我明白你的意思。我认为这样做是为了避免冲突,类似于着色的工作方式——不确定一个jar是否有非损坏选项。尝试包括foo.jar和main.jar,它们已编译,但由于其他jar的依赖性,在运行时无法工作。我可以单独添加所有其他的罐子,这会起作用,但我正在努力避免它。这就是为什么我要使用一个Jar,它是通过命令工作的,就像Eclipse一样,但不是通过Eclipse。好的,您想避免使用它有什么具体的原因吗。因为这是向构建路径添加依赖JAR的常用方法。如果您想将所有内容打包到一个jar中,那么您可以解压缩所有类文件并将它们打包到一个jar中。这听起来可能很愚蠢:)。但是我想不出其他的方法…使用一个罐子更方便,也更容易将它发送给其他人。而且,一个Jar应该解决依赖冲突(例如,我的应用程序使用commons库3.4,而我所依赖的一个库使用commons 2.4)。一个Jar应该可以对其进行着色。希望这和你想要的一样谢谢@tsatiz,FatJar做了这项工作。