gpt4 book ai didi

java - Maven项目中如何处理CLASSPATH?

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:40 25 4
gpt4 key购买 nike

我正在尝试使用 Log4J ver 2-beta 9 的简单 Maven 应用程序。在我的 pom.xml 文件中,我有这两个依赖项(如 Log4J Maven webpage 中所述):

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

Eclipse 看到 Log4J 库:

enter image description here

但是当我打包应用程序并运行它时,抛出了这个异常:

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

我搜索了这个异常,它似乎与 CLASSPATH 变量有关。

Maven项目的CLASSPATH应该如何设置?

最佳答案

Maven 是一个构建工具。它对运行最终应用程序帮助不大。

您可以使用 mvn exec:java -Dexec.mainClass="com.example.Sandbox" 来运行您的应用程序(参见问题 Maven Run Project )但是当您必须通过对它的争论。

您可以使用 mvn dependency:build-classpath 获取 Maven 用于编译您的应用程序的类路径

这会将类路径打印到控制台。请注意,它将丢失 target/notification-1.0.0.jar

该领域的另一个有用工具是 assembly plugin ;当您指定描述符 jar-with-dependencies 时,它将创建一个非常大的 JAR,所有依赖项都汇总到一个文件中。

关于java - Maven项目中如何处理CLASSPATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20045110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com