【问题标题】:How to fix: java.lang.NoSuchMethodError: r: org.springframework.util.ReflectionUtils.accessibleConstructor如何修复:java.lang.NoSuchMethodError: r: org.springframework.util.ReflectionUtils.accessibleConstructor
【发布时间】:2019-12-03 16:45:53
【问题描述】:

我正在设置一个新的 weblogic 服务器来部署和 spring + angular 应用程序。

当我部署它时,服务器返回以下错误:

java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.accessibleConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor; org.springframework.util.ReflectionUtils.accessibleConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;

我正在使用带有 java 8 的 weblogic 12c 来部署应用程序。我检查了这可能是模块中不同版本的依赖项的问题。但是我没有发现任何问题。

这是我的 Spring Boot 应用程序的 pom:

<?xml ...>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/>
</parent>
<groupId>com.xxxxx</groupId>
<artifactId>yyyyyyy</artifactId>
<version>1.0.0</version>
<name>centinela</name>
<description>Description</description>
<packaging>war</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </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-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.0.0.jre8</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.60</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.8</version>
    </dependency>
    <!-- Exclude Spring Boot's Default Logging -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- Add Log4j2 Dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>fhtn-fd</groupId>
        <artifactId>fhtn-fd</artifactId>
        <scope>system</scope>
        <version>1.0.0</version>
        <systemPath>${pom.basedir}\lib\fhtn-fd.jar</systemPath>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

在 pom 的底部,您将看到包含项目中使用的一些类的工件的依赖项。这是这个神器的pom。

    <?xml version="1.0" encoding="UTF-8"?>
<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>centinela-objects</groupId>
    <artifactId>fhtn-fd</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <!--<scope>provided</scope>-->
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我不知道是否有人可以帮助我正确部署此应用程序。

更新

这是我的 weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>

<weblogic-version>12.2.1</weblogic-version>
<context-root>/dgfdg-backend</context-root>
<container-descriptor>
    <index-directory-enabled>true</index-directory-enabled>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
    <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>

我将“prefer-web-inf-classes”设置为 true,以避免我的海关 jar 出现问题。我不能将“prefer-application-packages”与“prefer-web-inf-classes”一起使用,它们不兼容。

已解决

终于,我可以解决我的问题了。这是我创建自己的库之一并在我的网络服务中使用的方式。

我把它当作一个工件来使用,但我需要使用 maven 命令创建 jar。

使用“mvn clean package”创建库并将其放入我的网络服务后,我可以毫无问题地部署它。

【问题讨论】:

    标签: spring-boot intellij-idea dependency-injection weblogic


    【解决方案1】:

    异常告诉你有一个类没有没有任何参数的默认构造函数。 Jackson 库在 Weblogic 和 Spring 方面存在问题。

    weblogic.xml 文件示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.8/weblogic-web-app.xsd">
      <jsp-descriptor>
        <keepgenerated>true</keepgenerated>
        <debug>true</debug>
      </jsp-descriptor>
      <container-descriptor>
          <prefer-application-packages>
            <package-name>com.fasterxml.jackson.*</package-name>
          </prefer-application-packages>
      </container-descriptor>
      <context-root>/</context-root>
    </weblogic-web-app>
    

    我可以帮你设置,我正在使用 Weblogic 12.2.1.2 和 JDK 8 开发应用程序,我没有任何问题。

    【讨论】:

    • 非常感谢您的支持。我用我的 weblogic.xml 配置编辑了这个问题。不知道能不能帮到你。当我将类 jar 放入 spring boot 应用程序时出现问题。
    • 好吧,你放了部分文件,但重要的是你使用的标签的版本。是的,spring boot 在 Weblogic 上部署有些问题,但这就是为什么你需要配置你的项目。
    • 两个月前,我使用这个存储库创建了一个模板。它可以帮助你。 github.com/cgonul/spring-boot-primefaces-weblogic
    • 最后,我用maven命令解决了这个问题,创建了一个外部库的jar。非常感谢您的支持。我把我的解决方案放在问题的底部。
    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 2018-03-20
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2020-02-15
    相关资源
    最近更新 更多