我的同事已经从遵循层次结构的分支构建了一个JAR
|COM
|hive (containts 10 .JAR files)
|META-INF
|org
|- 1.jar
|- 2.jar
| ...
|- 46.jar
我从同一个分支创建了一个JAR,它省略了hive目录并将10个JAR文件放在根目录中。
|COM
|META-INF
|org
|- 1.jar
|- 2.jar
| ...
|- 56.jar
我们从根目录中的lib
目录中获取库,我将链接到项目结构,如下所示:
lib
目录看起来像这样:
当我构建工件并将其部署到服务器并尝试运行它时,我收到错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at com.citi.apama.feeds.ApamaFeed.<clinit>(ApamaFeed.java:43)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
...它引用了一个应该在JAR的hive目录中的类。
我的同事在Eclipse中构建的构建步骤是
File > Export > Runnable Jar file > Library handling: Package required libraries into generated JAR > Finish
我已尝试过Eclipse和IntelliJ的相同步骤我已按照this回答中列出的步骤进行操作。
我的同事正在Eclipse中构建,而我已经尝试过Eclipse和InteliJ都无济于事。我怎样才能模仿同事的等级?
修改
这可能是相关的,非工作JAR与工作JAR具有不同的属性: