Java NoSuchMethodError:org.apache.log4j.ConsoleAppender.(Lorg/apache/log4j/Layout;)
我有一个maven项目,包含jdk:1.8、spring boot:1.5.4.RELEASE、spring:4.3.9.RELEASE和一些供应商依赖项。项目生成并运行,但当我访问供应商软件包使用的资源时,会出现以下异常:Java NoSuchMethodError:org.apache.log4j.ConsoleAppender.(Lorg/apache/log4j/Layout;),java,spring,maven,Java,Spring,Maven,我有一个maven项目,包含jdk:1.8、spring boot:1.5.4.RELEASE、spring:4.3.9.RELEASE和一些供应商依赖项。项目生成并运行,但当我访问供应商软件包使用的资源时,会出现以下异常: java.lang.NoSuchMethodError: org.apache.log4j.ConsoleAppender.<init>(Lorg/apache/log4j/Layout;)V at bkLogPkg.SingletonLog.<i
java.lang.NoSuchMethodError: org.apache.log4j.ConsoleAppender.<init>(Lorg/apache/log4j/Layout;)V
at bkLogPkg.SingletonLog.<init>(SingletonLog.java:19) ~[VendorComLib.jar:na]
at Vendor.ConnectionBasket.<init>(ConnectionBasket.java:31) ~[VendorServices.jar:na]
at Vendor.ConnectionBasketInterface.Loader(ConnectionBasketInterface.java:450) ~[VendorServices.jar:na]
at Vendor.ConnectionBasketInterface.<init>(ConnectionBasketInterface.java:251) ~[VendorServices.jar:na]
...
它试图将方法从供应商jar文件调用到log4j1.2.14.jar文件,但它无法这样做。我在pom.xml文件中添加了供应商依赖项
pom.xml:
http://maven.apache.org/xsd/maven-4.0.0.xsd>
4.0.0
<groupId>com.sample</groupId>
<artifactId>angular2-spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>angular2-spring</name>
<description>Angular 2 application with Spring 4</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<org.slf4j-version>1.2.14</org.slf4j-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- Vendor dependencies from Local Repository -->
<dependency>
<groupId>Vendor</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>Vendor</groupId>
<artifactId>VendorServiceAuth</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>Vendor</groupId>
<artifactId>VendorServices</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>Vendor</groupId>
<artifactId>VendorComLib</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>Vendor</groupId>
<artifactId>VendorHeaderClass</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
我也遇到过类似的问题,通过确保我使用的版本是最新的,并且与代码的其余部分兼容,我所有的问题都得到了解决。对于您的问题,看起来.jar是专门为兼容而构建的,所以我怀疑这是问题所在。根据手头的信息,我唯一能想到的是: 一,。尝试确保使用的所有.jar都是最新版本。有时,如果您的其他.jar没有完全更新,那么在尝试从前面版本的.jar访问方法时,它们可能会抛出错误/异常
二,。如果1不这样做,请尝试在IDE中使用依赖项导入函数。我曾多次遇到Maven只是因为IDE兼容性而导致奇怪错误的情况。从依赖项菜单导入所有.jar也会有所帮助 我今天也有同样的问题。我花了几个小时才找到原因 您只是与log4j jar有冲突 解决这一问题的快速方法是:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
如果确实需要log4j,则添加依赖项:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
您可以查看以了解详细信息。我在Dependency菜单中导入了jar,但我无法更新log4j jar,因为我的供应商jar依赖于旧版本的log4j。如果是这样,我可以想到的是,请确保您使用的log4j版本是正确的旧版本。请注意,过时的.jar很容易出现这样的问题。如果这不是问题,我建议尝试寻找一个供应商的替代品。jar的东西更新到当前版本。好吧,这是正确的版本,正如你所看到的,上面我使用的是供应商提供的log4jjar文件,它在我的控制台项目中工作,但当我在web应用程序中使用它时,它失败了。我必须手动将该文件包括在我的项目构建路径中才能正常工作。我不明白,我在pom.xml中有一个文件,它在maven库下的项目构建路径中添加了jar文件,但它不起作用,但当我手动将jar文件添加到构建路径时,它起作用了!