rest - weblogic12c REST问题: java. lang.NoSuchMethodError : com. fastxml.jackson.databind.ObjectWriter.forType

标签 rest spring-boot jackson weblogic12c

我意识到会有人想要将其标记为重复项,但我已经尝试了我在 stackflow 中看到的所有解决方案,但没有运气。请问有人可以准确地告诉我问题出在哪里吗?

将 Spring Boot 服务部署到 weblogic12c 后出现错误:

java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectWriter.forType(Lcom/fasterxml/jackson/databind/JavaType;)Lcom/fasterxml/jackson/databind/ObjectWriter;

我已将这些库添加到我的 $DOMAIN/lib 目录中,并且我看到它们在启动时加载:

<Mar 6, 2018 12:58:37 PM EST> <Notice> <WebLogicServer> <BEA-000395> <The following extensions directory contents added to the end of the classpath: 
C:\Oracle_12c_Home\user_projects\domains\fsma_3\lib\jackson-annotations-2.8.8.jar;C:\Oracle_12c_Home\user_projects\domains\fsma_3\lib\jackson-core-2.8.8.jar;C:\Oracle_12c_Home\user_projects\domains\fsma_3\lib\jackson-databind-2.8.8.jar.> 

我确实注意到 com.fasterxml:classmate=com.fasterxml:classmate:jar:1.3.3:compile 正在构建中进行编译。这与 Jackson 库不兼容吗?

这是我的 pom.xml 的相关部分:

        <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
<!--        <version>2.8.8</version> -->
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
<!--        <version>2.8.8</version> -->
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
<!--        <version>2.8.8</version> -->
</dependency>

这是我的dispatcherServlent.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd">

   <mvc:annotation-driven/> <!-- Must require to enable @ResponseBody annotation -->

</beans>

这是 weblogic.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="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/ejb-jar_3_0.xsd           
                    http://xmlns.oracle.com/weblogic/weblogic-web-app            
                    http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:container-descriptor>
    <!--<wls:index-directory-enabled>true</wls:index-directory-enabled>  -->
    <wls:prefer-application-packages>
        <wls:package-name>org.slf4j</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>
<wls:context-root>spring-boot-pcocar</wls:context-root>

<wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>com.fasterxml</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

<!--    <security-role-assignment>
    <role-name>PC_OCAR_GROUP</role-name>
    <principal-name>pcocar</principal-name>
</security-role-assignment> -->

这是 web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>gov.fda.furls.fsma.pcocar.Application</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
</listener>
<filter>
    <filter-name>metricFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>metricFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextAttribute</param-name>
        <param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!--    <security-constraint>
    <web-resource-collection>
        <web-resource-name>Access to the entire application</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
        <http-method>GET</http-method>
        <http-method>DELETE</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>PC_OCAR_GROUP</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description>SSL not required</description>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>pcocar</realm-name>
</login-config>
<security-role>
    <role-name>PC_OCAR_GROUP</role-name>
</security-role> -->

最佳答案

很抱歉,解决方案很简单,但我在 weblogic.xml 文件中做错了一些事情。

这就是您需要在 weblogic.xml 文件中执行的操作:

    <?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="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/ejb-jar_3_0.xsd           http://xmlns.oracle.com/weblogic/weblogic-web-app            http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <!--<wls:index-directory-enabled>true</wls:index-directory-enabled>  -->
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
    <wls:context-root>spring-boot-pcocar</wls:context-root>

</wls:weblogic-web-app>

删除 pom.xml 中对 com.fasterxml.jackson.core 的所有引用,然后它将部署并运行。

关于rest - weblogic12c REST问题: java. lang.NoSuchMethodError : com. fastxml.jackson.databind.ObjectWriter.forType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137745/

相关文章:

找不到 Spring 数据 jpa 存储库属性

spring-boot - JDK11 + Spring 启动 = JAXBException : Implementation of JAXB-API has not been found on module path or classpath

java - JsonIgnoreType 只查看字段声明的类型?

java - JBoss 6.4.20 补丁中允许使用哪些版本的 Jackson?

rest - 将文件管理到 modules/Sails.js

javascript - 我的 REST 中的 @ModelAttribute 为空

Java Spring Boot - 使用有效载荷记录响应

java - GET 请求返回 404 未找到

java - 使用 mysql 驱动程序使用 mysql 数据库设置 spring-boot 项目

java - jackson JSON : get node name from json-tree