Java 如何将log4j与Maven和可执行jar文件一起使用?
我试图让log4j在一个简单的应用程序中工作,但我得到了一个信息:Java 如何将log4j与Maven和可执行jar文件一起使用?,java,maven,log4j,Java,Maven,Log4j,我试图让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 -
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>
4.0.0
net.uofitorn
午餐追踪者
罐子
1.0-快照
午餐追踪者
http://maven.apache.org
org.apache.maven.plugins
maven jar插件
真的
解放党/
net.uofitorn.午餐跟踪服务器
log4j
log4j
1.2.16
编译
以下是我的java代码:
import org.apache.log4j.Logger;
<snip>
Logger logger = Logger.getLogger(LunchTrackerServer.class.getName());
logger.debug("Server started");
import org.apache.log4j.Logger;
Logger=Logger.getLogger(午餐跟踪服务器.class.getName());
调试(“服务器已启动”);
我认为问题在于log4jjar没有包含在我的jar文件中。当我打开罐子的拉链时,我看不到它。如何让maven在我的jar中包含log4j依赖项?您需要在运行时提供
log4j
依赖项,并且要提供需要将log4j
工件打包到jar中的依赖项,您需要在运行时提供log4j
依赖项,为了提供您需要将log4j
工件与jar打包在一起的功能,您需要做的是创建一个绑定了依赖项的可执行jar
有几种方法可以做到
使用
也是另一个不错的选择您需要做的是创建一个绑定了依赖项的可执行JAR 有几种方法可以做到 使用
也是另一个很好的选择当使用maven进行依赖项管理时,您应该使用IDE将依赖项添加到类路径中,或者使用maven exec:java goal maven exec插件运行主类(请参阅) 为此,您需要在pom.xml中指定主类,并使用以下命令从命令行运行它:
mvn exec:java
或者直接从命令行运行它:
mvn exec:java -Dexec.mainClass="net.uofitorn.LunchTrackerServer"
当使用maven进行依赖项管理时,您应该使用IDE将依赖项添加到类路径中,或者使用maven exec:java目标maven exec插件运行主类(请参阅) 为此,您需要在pom.xml中指定主类,并使用以下命令从命令行运行它:
mvn exec:java
或者直接从命令行运行它:
mvn exec:java -Dexec.mainClass="net.uofitorn.LunchTrackerServer"
我并不是百分之百支持这一点,但我相信您可以在
java
命令中包含所有必要的jar,比如:java-cp“午餐跟踪器-1.0-SNAPSHOT.jar;path-to-log4j-jar/log4j-1.2.16.jar”my.package.MainClass
。我不是百分之百支持这一点,但是我相信您可以在java
命令中包含所有必要的jar,如下所示:java-cp“午餐跟踪器-1.0-SNAPSHOT.jar;path-to-log4j-jar/log4j-1.2.16.jar”my.package.MainClass
。