【问题标题】:Spring-boot War on Weblogic 12cWeblogic 12c 上的 Spring-boot 之战
【发布时间】:2019-02-06 14:54:10
【问题描述】:

我在部署 Spring-boot 2.1.2.RELEASE 时遇到错误 WebLogic 12.2.1.2.0。

这是堆栈跟踪:

Caused By: java.lang.IllegalAccessError: tried to access method com.fasterxml.jackson.databind.ser.std.StdSerializer.<init>(Ljava/lang/Class;)V from class com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
at com.fasterxml.jackson.datatype.jsr310.JavaTimeModule.<init>(JavaTimeModule.java:168)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:122)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.registerWellKnownModulesIfAvailable(Jackson2ObjectMapperBuilder.java:760)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(Jackson2ObjectMapperBuilder.java:639)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:623)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.<init>(MappingJackson2HttpMessageConverter.java:59)
at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:76)
at org.springframework.web.filter.FormContentFilter.<init>(FormContentFilter.java:60)
at org.springframework.boot.web.servlet.filter.OrderedFormContentFilter.<init>(OrderedFormContentFilter.java:29)
at org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.formContentFilter(WebMvcAutoConfiguration.java:166)

我已尝试将其添加到 weblogic.xml:

  <wls:package-name>com.fasterxml.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.databind.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.datatype.jsr310.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.datatype.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.module.*</wls:package-name>

我也尝试过使用 prefer-web-inf 类。 StdSerializer 类在 jackson-datatype-jsr310:2.9.8 jar 中,理论上这不应该是一个问题,因为 welogic 没有包含 Jackson。任何帮助,将不胜感激。

【问题讨论】:

    标签: java spring-boot jackson weblogic weblogic12c


    【解决方案1】:

    1) 在你的 weblogic.xml 文件中只保留这些包,其他的都是不必要的:

    <wls:prefer-application-packages>
        <wls:package-name>org.slf4j.*</wls:package-name>
        <wls:package-name>org.springframeworks.*</wls:package-name>
        <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
    </wls:prefer-application-packages>
    

    2) 根据Spring Docs,第 92.1 节将其包含在您的 pom.xml 中:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

    这个错误是因为 Spring Boot 试图启动一个 Tomcat 容器,导致类路径冲突。按照提供的方式设置依赖项将删除大部分依赖项,并在 weblogic.xml 中包含 com.fasterxml.jackson.* 将处理剩余的冲突。

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2018-10-03
      • 2017-04-07
      • 2019-01-28
      • 2016-11-04
      • 2018-09-13
      相关资源
      最近更新 更多