【问题标题】:maven compilation - error log4jmaven编译-错误log4j
【发布时间】:2012-01-29 20:36:12
【问题描述】:

我正在构建 java 应用程序,突然发现编译有问题:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project sonda: Compilation failure: Compilation failure:
[ERROR] ..../service/UserService.java:[7,23] package org.apache.log4j does not exist

但我之前正在构建这个应用程序,一切都很好。另外,当我在 Eclipse 下使用 tomcat 运行这个应用程序时,它运行良好。

在 pom 我有:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${org.slf4j-version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.15</version>
        <exclusions>
            <exclusion>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
        </exclusions>
        <scope>runtime</scope>
    </dependency>

你能帮帮我吗?

【问题讨论】:

    标签: maven log4j pom.xml


    【解决方案1】:

    更改 log4j 依赖的范围以编译或删除它。

    【讨论】:

    • 编译,对我也有帮助。
    • 在大多数情况下使用这个。要么将作用域设为编译而不是运行时,要么将其删除
    【解决方案2】:

    我遇到了完全相同的问题:

    pom.xml:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.3</version>
    </dependency>
    

    构建错误:package org.apache.log4j does not exist

    根本原因:我需要针对较旧的 JRE (JRE 1.5.x) 构建我的项目;当前的库显然不兼容。

    解决方案:返回到旧版本的 log4j.jar:

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

    【讨论】:

      【解决方案3】:

      在你的 POM 中删除它:

      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${org.slf4j-version}</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
          <version>${org.slf4j-version}</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${org.slf4j-version}</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.15</version>
          <exclusions>
              <exclusion>
                  <groupId>javax.mail</groupId>
                  <artifactId>mail</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>javax.jms</groupId>
                  <artifactId>jms</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>com.sun.jdmk</groupId>
                  <artifactId>jmxtools</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>com.sun.jmx</groupId>
                  <artifactId>jmxri</artifactId>
              </exclusion>
          </exclusions>
          <scope>runtime</scope>
      </dependency>
      

      替换为:

      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.15</version>
          <exclusions>
              <exclusion>
                  <groupId>javax.mail</groupId>
                  <artifactId>mail</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>javax.jms</groupId>
                  <artifactId>jms</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>com.sun.jdmk</groupId>
                  <artifactId>jmxtools</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>com.sun.jmx</groupId>
                  <artifactId>jmxri</artifactId>
              </exclusion>
          </exclusions>
        
      </dependency>
      

      【讨论】:

        【解决方案4】:

        朋友在使用JRE的时候出现这种问题,把你项目的库改成Java JDK,问题就解决了,你就可以使用slf4j了。

        【讨论】:

          猜你喜欢
          • 2012-10-28
          • 2015-08-30
          • 1970-01-01
          • 2013-02-19
          • 2015-01-12
          • 2018-07-11
          • 1970-01-01
          相关资源
          最近更新 更多