当前位置: 首页 > 知识库问答 >
问题:

组织。阿帕奇。log4j。尽管存在Maven依赖项,但无法解析记录器

宗政唯
2023-03-14

我正在使用maven(即eclipse的maven插件)进行依赖关系管理,通常它是有效的。例如,jasypt解决了强文本问题,我可以毫无问题地使用它。然而,在尝试使用Log4J时,我遇到了诸如“import org.apache.Log4J无法解决”之类的问题,尽管我遵循了上描述的确切步骤http://logging.apache.org/log4j/2.x/maven-artifacts.html.

它说我需要在pom中包含以下代码片段。xml

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.6.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

然而,这确实包括在我的pom中。xml在我的完整pom中给出。xml。这对任何人都有意义吗?我还尝试用以下内容替换这两个依赖项,但是没有成功

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>2.6.2</version>
    <type>pom</type>
</dependency>

干杯汤姆

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>PCenter</groupId>
  <artifactId>PCenter</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>PCenter</name>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>ejbModule</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>com.paypal.sdk</groupId>
        <artifactId>rest-api-sdk</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>org.jasypt</groupId>
        <artifactId>jasypt</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis-jaxrpc</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.6.2</version>
    </dependency>
  </dependencies>
</project>

共有2个答案

易波涛
2023-03-14

嗯,实际上我尝试了ppeterkas建议的包含旧的1.2x api的解决方案,但这对我不起作用,我仍然有这个问题。由于无法编译的代码不是我的代码,而是一些我碰巧在自己的代码中使用的开源代码,我真的不想修改它的记录器(我还应该提到,我刚刚开始有这个问题在新打开我的日食在一台新电脑上,之前它实际上编译罚款与相同的pom.xml,所以这很奇怪,但尽管如此,它仍然需要修复然后...)。

因此,我的解决方案是包含一个ApacheLog4J1。log4j 2.7的x兼容性API:

http://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-1.2-api/2.7

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-1.2-api -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.7</version>
</dependency>

希望这能帮助其他有同样问题的人。

田文景
2023-03-14

问题是依赖项中有Log4j2,而使用的是较旧的log4j1.2。x API。

>

  • 或者取决于Log4j 1.2。十、

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

    或者对Log4j 2使用正确的API调用。x:

    调用org。阿帕奇。log4j。记录器。getLogger()必须修改为org。阿帕奇。登录中。log4j。日志管理器。getLogger()

    (从Log4j 1.x迁移)

  •  类似资料:
    • 我有一个Web应用程序Java类运行到一个名为Sincronizador的Wildfly中。我确实创建了一个特定的org.apache.log4j。记录器在Sincronizador.java但是也将信息放在Wildfly中。我想只在这个记录器中记录信息

    • 我们使用ivy来管理一个多项目java应用程序,最近当我们进行构建时,这个错误开始出现。这是什么原因?

    • 在我部署在WebSphere 8.5上的java应用程序中,我遇到了这个错误,尽管我的maven依赖项低于log4j。 我确实运行了一个,我可以看到它正以 的形式被拉进来,这是我期望在树结果中看到的,这样我就可以确认它在类路径中。有什么想法吗?

    • 我正试图让我的Grails应用程序使用logback插件登录。根据文档说明,以下是我迄今为止所做的工作: 然后我运行了一个。当我运行一个时,我得到一个绝对巨大的堆栈跟踪,如下所示: 此外,在我的GGTS IDE中,添加到中的两个导入语句出现了编译器错误。听起来我的Grails应用程序中仍然有Log4j引用,并且运行将Log4j JAR从我的类路径中删除。这可能解释了堆栈跟踪。但这并不能解释为什么G

    • 我有一个简单的项目和一些EJB,我试图部署到一个服务器。这就是我如何尝试初始化我的: 没什么特别的。 这就是我的相关部分如下所示: 没有这一部分,我可以建立我的项目。但在这一部分,我得到了一个例外: 我该怎么办?非常感谢。

    • 这是我们单个模块的pom.xml 我们有很多模块,当我们从intellji运行时,当我们尝试将单个模块转换为。jar并通过-mvn clean安装运行,我们得到了这个错误。 这是错误代码