Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Eclipse 如何将log4j1.2完全集成到maven构建中_Eclipse_Maven_Log4j - Fatal编程技术网

Eclipse 如何将log4j1.2完全集成到maven构建中

Eclipse 如何将log4j1.2完全集成到maven构建中,eclipse,maven,log4j,Eclipse,Maven,Log4j,一周来,我一直在绞尽脑汁,试图找出我在这里做错了什么,包括试图在这个网站上和通过谷歌找到解决方案,但我想也许我不知道我在搜索什么。非常感谢您的帮助 我的目标是在我在EclipseKepler中创建的Maven 2 Java项目中使用log4j 1.2.17。我从Maven原型:quickstart中重新创建了这个问题,然后在pom.xml中添加了log4j依赖项,如下所示 <dependency> <groupId>log4j</groupId>

一周来,我一直在绞尽脑汁,试图找出我在这里做错了什么,包括试图在这个网站上和通过谷歌找到解决方案,但我想也许我不知道我在搜索什么。非常感谢您的帮助

我的目标是在我在EclipseKepler中创建的Maven 2 Java项目中使用log4j 1.2.17。我从Maven原型:quickstart中重新创建了这个问题,然后在pom.xml中添加了log4j依赖项,如下所示

    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    </dependency>
但是在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

java类路径中缺少log4jjar。 如果知道log4jjar在文件系统上的位置,可以将其附加到
-cp
类路径参数中

如果要复制或捆绑依赖项,可以考虑使用,请参阅。讨论了许多备选方案


测试jar项目并让maven构建运行时类路径的另一种方法是通过maven单元或

把它拼出来后,解决办法就容易多了。我在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>


.

我喜欢Furlong提供的答案。如果它因任何原因不起作用,您可以尝试下面的解决方案

我认为您需要使用以下maven插件:

This plugin provides the capability to package the artifact in an uber-jar, 
including its dependencies and to shade - 
i.e. rename - the packages of some of the dependencies.
你可以

当您拥有插件并执行以下操作时:

mvn package
它将构建一个所谓的uberjar。它包含所有依赖jar文件的内容,作为一个大而胖的jar文件


因此,它也将包含org.apache.log4j.LogManager类。

当我在Eclipse中运行没有maven的应用程序时,我收到了正确的输出,因此我的pom.xml文件肯定有问题,但这里列出了log4j文件。如果你愿意,请详细说明这一点?我已经阅读了maven dependency plugin usage页面,并且相信我正确地使用了它,所以问题一定是我如何在pom文件中将log4j作为插件列出。
This plugin provides the capability to package the artifact in an uber-jar, 
including its dependencies and to shade - 
i.e. rename - the packages of some of the dependencies.
mvn package