проблема Jackson-databind с пружинным ядром - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь создать приложение / json конвертер для моего шаблона oauth rest:

    List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
    MappingJackson2HttpMessageConverter jackson = new MappingJackson2HttpMessageConverter();
    List<MediaType> mediaTypes = new ArrayList<MediaType>();
    mediaTypes.add(MediaType.APPLICATION_JSON);
    jackson.setSupportedMediaTypes(mediaTypes);
    messageConverters.add(jackson);

    ProcessServiceVisitType request = TransformationHelper.createProcessServiceVisit(singleRepairOrder);

    MultiValueMap<String, String> headers =  new LinkedMultiValueMap<String, String>();
    headers.add("Content-Type", "application/xml");

    HttpEntity<ProcessServiceVisitType> entity = new HttpEntity<>(request);

   restTemplate.exchange(URL, org.springframework.http.HttpMethod.POST, entity, AcknowledgeServiceVisitType.class);

Однако я получаю эту недостающую проблему класса:

        java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.<clinit>(AbstractJackson2HttpMessageConverter.java:62)
    at com.xx.as.sle.xx.utility.SendToUtil.sendTo(SendToUtil.java:72)
    at com.xx.as.sle.xx.servlet.resource.OrderResource.sendTo(OrderResource.java:137)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper

Чтобы исправить эту проблему, я попытался добавить и обновить зависимости в моем pom.xml, например, изменить мой spring.version - 4.1.4 на 4.3.5 и даже добавить jackson-привязка данных 2.7.0 .Однако, независимо от того, как я обновляю свой pom, я получаю эту ошибку всякий раз, когда пытаюсь добавить jackon / databind:

    org.springframework.http.converter.HttpMessageConversionException: Could not instantiate JAXBContext for class [class org.star._564.starstandard.star._5.ProcessServiceVisitType]: 
    Exception Description: Invalid XmlElementRef on property rest on class org.star._564.starstandard.star._5.IndividualApplicantPersonNameType. Referenced Element not declared.; nested exception is javax.xml.bind.JAXBException: 
    Exception Description: Invalid XmlElementRef on property rest on class org.star._564.starstandard.star._5.IndividualApplicantPersonNameType. Referenced Element not declared.
     - with linked exception:
    [Exception [EclipseLink-50006] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JAXBException
    Exception Description: Invalid XmlElementRef on property rest on class org.star._564.starstandard.star._5.IndividualApplicantPersonNameType. Referenced Element not declared.]
        at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.getJaxbContext(AbstractJaxb2HttpMessageConverter.java:116)
        at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.createMarshaller(AbstractJaxb2HttpMessageConverter.java:50)

Может ли кто-нибудь помочь мне решить эту проблему и понять, что эта проблема означает?Я использую Intellij и работаю с Oracle Weblogic 12c.Я не уверен, почему я получаю эту ошибку Eclipse.Я попытался добавить spring-core зависимость, но все равно выдает мне эту ошибку.

Вот мой pom.xml:

    <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/maven-v4_0_0.xsd">

        <modelVersion>4.0.0</modelVersion>

        <groupId>com.xx.gbrd</groupId>
        <artifactId>Util_12345__Simulator</artifactId>
        <packaging>war</packaging>
        <name>Util_12345 -  Simulator</name>
        <version>1.0.0.0-SNAPSHOT</version>

        <properties>
            <javax.inject.version>1</javax.inject.version>
            <m2eclipse.wtp.contextRoot>/simulator</m2eclipse.wtp.contextRoot>
            <spring.version>4.3.5.RELEASE</spring.version>
            <spring.ws.version>2.2.0.RELEASE</spring.ws.version>
            <maven.compiler.version>3.1</maven.compiler.version>
            <slf4j.version>1.7.7</slf4j.version>
            <jersey.version>1.17.1</jersey.version> <!-- Later versions available, consider upgrading if weblogic will support 
                it -->
            <jersey.scope>compile</jersey.scope>    <!-- compile or provided, provided with glassfish, compile with tomcat & 
                weblogic -->
            <servlet.spec.version>2.5</servlet.spec.version>    <!-- May change based on weblogic version. This is for 10.3.6 -->
            <mockito.version>1.9.5</mockito.version>
            <build.scm.revision>${jenkins.build.scm.revision}</build.scm.revision>
            <build.number>${jenkins.build.number}</build.number>
            <build.id>${jenkins.build.id}</build.id>
            <build.job.name>${jenkins.build.job.name}</build.job.name>
            <timestamp>${maven.build.timestamp}</timestamp>
            <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
        </properties>

        <!--<parent> -->
        <!--<groupId>com.xx.gbrd</groupId> -->
        <!--<artifactId>asd_46679_Templates_WebService</artifactId> -->
        <!--<version>3.8.0.6-SNAPSHOT</version> -->
        <!--<relativePath>../templates/webservice/pom.xml</relativePath> -->
        <!--</parent> -->

        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security.oauth</groupId>
                <artifactId>spring-security-oauth2</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>com.xx.gbrd</groupId>
                <artifactId>asd_46679_SEE_STARBOD</artifactId>
                <version>2.0.0.21</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-core</artifactId>
                <version>${spring.ws.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.ws</groupId>
                <artifactId>spring-ws-security</artifactId>
                <version>${spring.ws.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>javax.inject</groupId>
                <artifactId>javax.inject</artifactId>
                <version>${javax.inject.version}</version>
            </dependency>

            <!-- Jersey JAX-RS (Provided by GlassFish) -->
            <!-- CDDL 1.1 and GPL 2 with CPE -->
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-server</artifactId>
                <version>${jersey.version}</version>
                <scope>${jersey.scope}</scope>
            </dependency>
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-core</artifactId>
                <version>${jersey.version}</version>
                <scope>${jersey.scope}</scope>
            </dependency>
            <dependency>
                <groupId>com.sun.jersey.contribs</groupId>
                <!--<artifactId>jersey-spring</artifactId> -->
                <artifactId>jersey-spring-cddl</artifactId>
                <version>${jersey.version}</version>
                <scope>${jersey.scope}</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aop</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-json</artifactId>
                <version>${jersey.version}</version>
                <scope>${jersey.scope}</scope>
            </dependency>
            <!-- ASM added here because it makes some of the Jersey stuff work properly -->
            <dependency>
                <groupId>asm</groupId>
                <artifactId>asm</artifactId>
                <version>3.3.1</version>
            </dependency>

            <!-- Servlet API -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet.spec.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>

            <!-- ***** LOGGING ***** -->
            <!-- slf4j (Simple Logging Fascade) -->
            <!-- MIT License, compatible with Apache License v2.0 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-all</artifactId>
                <version>${mockito.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>1.4</version>
            </dependency>
        </dependencies>

        <build>
            <defaultGoal>clean install</defaultGoal>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <attachClasses>true</attachClasses>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven.compiler.version}</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <!--<compilerargument>-Djava.endorsed.dirs="${project.basedir}/endorsed"</compilerargument> -->
                    </configuration>
                </plugin>

            </plugins>

            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>

        <profiles>
            <profile>
                <id>LOCAL</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
            </profile>

            <profile>
                <id>DEVELOPMENT</id>
            </profile>

            <profile>
                <id>QA_TEST</id>
            </profile>

            <profile>
                <id>PRODUCTION</id>
            </profile>
        </profiles>

    </project>

1 Ответ

0 голосов
/ 08 декабря 2018

Я думаю, что вы столкнулись с этой проблемой, потому что у вас все еще есть Moxy в вашем classpath.Oracle weblogic по умолчанию использует Moxy для сериализации.

Взгляните на этот Weblogic 12.2.1.3 от Moxy до Джексона

и посмотрите, сможете ли вы полностью заменить Moxy на Jackson.

...