eclipse之如何将 log4j 1.2 完全集成到 Maven 构建中

你猜 阅读:16 2024-11-01 17:39:52 评论:0

一个星期以来,我一直在绞尽脑汁想弄清楚我做错了什么,包括试图在这个网站上和通过谷歌找到解决方案,但我想也许我不知道我在做什么我正在寻找。非常感谢任何帮助!

我的目标是在我在 Eclipse Kepler 中创建的 Maven 2 Java 项目中使用 log4j 1.2.17。我从 Maven 原型(prototype)重新创建了问题:quickstart,然后像这样在 pom.xml 中添加了 log4j 依赖项......

    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
    </dependency> 

以便运行“maven package”构建愉快...

import org.apache.log4j.Logger; 
import org.apache.log4j.LogManager; 
import org.apache.log4j.BasicConfigurator; 
 
public class App  
{ 
    private static Logger logger =  
            LogManager.getLogger( App.class ); 
 
    public static void main( String[] args ) 
    { 
        BasicConfigurator.configure(); 
        logger.debug( "Entering the main class" ); 
 
    System.out.println( "Hello World!" ); 
    } 
} 

但是在 Maven 构建后在命令行上运行“java -cp target/dc-0.1.jar DC.dc.App”会导致:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager 
at DC.dc.App.<clinit>(App.java:14) 
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:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 1 more 

我遵守 Maven 目录结构,log4j.properties 存储在/src/main/resources 中。这是 log4j 文件。

log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender 
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout 
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 
log4j.rootLogger = DEBUG, consoleAppender 

请您参考如下方法:

拼写出来后,解决方案就容易多了。我在 pom.xml 中添加了以下内容:

<build> 
  <plugins> 
    <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
        <archive> 
          <manifest> 
            <mainClass>fully.qualified.MainClass</mainClass> 
          </manifest> 
        </archive> 
        <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
      </configuration> 
    </plugin> 
  </plugins> 
</build> 

然后运行mvn clean compile assembly:single 然后运行应用程序 java -cp target/dc-0.1-jar-with-dependencies.jar DC.dc.App

一切都很愉快。我在 how-can-i-create-an-executable-jar-with-dependencies-using-maven 找到了解决方案.


标签:Maven
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号