Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日食不';我不认识我用一个罐子做的罐子_Java_Eclipse_Jar - Fatal编程技术网

Java 日食不';我不认识我用一个罐子做的罐子

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导入

所以我用main方法编写了一个类,这个类依赖于另一个jar文件,这个jar文件依赖于许多jar文件。为了使事情更简单,我使用了一个JAR并创建了一个可执行JAR。 我创建的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做了这项工作。