我試圖讓log4j的一個簡單的應用程序工作,但我得到的消息:如何在Maven和可執行jar文件中使用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");
我認爲這個問題是log4j的罐子不被包含在我的jar文件。當我解壓縮jar時,我沒有看到它。我如何讓maven在我的jar中包含log4j依賴項?
我對此並不是100%,但我相信你可以像這樣在'java'命令中包含所有必需的jar:'java -cp「lunchtracker-1.0-SNAPSHOT.jar; path-to-log4j-jar/log4j-1.2.16.jar「my.package.MainClass」。 – acdcjunior