use*_*736 8 java classpath maven
我正在尝试使用 Log4J ver 2-beta 9 的简单 Maven 应用程序。在我的 pom.xml 文件中,我有这两个依赖项(如Log4J Maven 网页中所述):
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta9</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Eclipse 看到 Log4J 库:
但是当我打包应用程序并运行它时,会抛出这个异常:
java -cp target/notification-1.0.0.jar com.example.Sandbox
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
at com.example.Sandbox.<clinit>(Sandbox.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我搜索了这个异常,它似乎与 CLASSPATH 变量有关。
应该如何为 Maven 项目设置 CLASSPATH?
Maven 是一个构建工具。它对您运行最终应用程序没有多大帮助。
您可以使用mvn exec:java -Dexec.mainClass="com.example.Sandbox"
来运行您的应用程序(请参阅问题Maven Run Project),但是当您必须将参数传递给它时,这会变得很乏味。
您可以获得 Maven 用来编译您的应用程序的类路径 mvn dependency:build-classpath
这会将类路径打印到控制台。请注意,它将丢失target/notification-1.0.0.jar
这方面另一个有用的工具是程序集插件;当您指定描述符时,它将创建一个非常大的 JAR,将所有依赖项都卷入一个文件中jar-with-dependencies
。
归档时间: |
|
查看次数: |
17951 次 |
最近记录: |