【发布时间】:2020-07-19 11:51:38
【问题描述】:
我有一个简单的 java 程序。我正在使用 gradle 在 Eclipse 中进行开发,并且正在使用 log4j2 进行日志记录。这一切都很好。
当我从命令行运行时,我做了一个 gradlew 构建,它可以工作,但是当我运行 jar 时出现错误:
java -jar build\libs\testproj.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at com.xxxxxx.practice.App.<clinit>(App.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 1 more
我可以在我的 userprofile.gradle 文件夹中看到一堆 log4j 文件,我可以运行一个 gradle dist 任务,然后获取并解压缩生成的 zip 文件,然后指向其中的内容,但如果有一些方法避免这个?当然,我可以在清单中添加一些东西,或者我可以随意从命令行运行而没有开销?
要清楚,只是日志记录有这个问题。除了它运行之外,还可以从命令行进行测试等工作,并且在 eclipse 中可以正常进行日志记录。
【问题讨论】:
-
在运行配置中有一个按钮显示命令行来获取Eclipse使用的命令行。
-
@howlger 谢谢。我只是尝试只使用类路径部分,并像以前一样指定我的 jar,但我遇到了同样的问题。另外,即使这样有效,您通常会这样做吗?我有点期待像 gradle 任务这样的东西会为我做这种事情。否则,假设可行,我可能会更好地沿着“构建一个 dist”路线走下去。
-
您可以添加您的
build.gradle文件吗?