[英]How do I use log4j with Maven and executable jar file?
我试图让log4j在一个简单的应用程序中工作,但我收到的消息是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
我用命令执行应用程序:
java -jar lunchtracker-1.0-SNAPSHOT.jar
log4j.properties文件位于src / main / resources中。 这是我的pom.xml:
<project <snip -- was messing up formatting>>
<modelVersion>4.0.0</modelVersion>
<groupId>net.uofitorn</groupId>
<artifactId>lunchtracker</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>lunchtracker</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>net.uofitorn.LunchTrackerServer</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
这是我的java代码:
import org.apache.log4j.Logger;
<snip>
Logger logger = Logger.getLogger(LunchTrackerServer.class.getName());
logger.debug("Server started");
我认为问题是我的jar文件中没有包含log4j jar。 当我解开罐子时,我看不到它。 如何让maven在我的jar中包含log4j依赖项?
你需要在运行时提供log4j
依赖,并提供你需要用jar包装log4j
工件, 以下是如何创建fat jar
使用maven进行依赖关系管理时,您应该使用IDE将依赖项添加到类路径中,或者使用maven exec运行主类:java goal maven exec plugin(请参阅http://mojo.codehaus.org/exec-maven- plugin / java-mojo.html )。
为此,您需要在pom.xml中指定主类,并使用以下命令从命令行运行它:
mvn exec:java
或者直接从命令行运行它:
mvn exec:java -Dexec.mainClass="net.uofitorn.LunchTrackerServer"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.