Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将log4j与Maven和可执行jar文件一起使用?_Java_Maven_Log4j - Fatal编程技术网

Java 如何将log4j与Maven和可执行jar文件一起使用?

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 -

我试图让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>

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