java.lang.ClassNotFoundException Как это возможно? - PullRequest
0 голосов
/ 09 октября 2018

Я добавил библиотеку с этой зависимостью

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

, тогда, когда я пытаюсь создать класс pojo, Idea сказала мне, что он не может найти класс, но класс существует java.lang.ClassNotFoundException: org.codehaus.jackson.annotate.JsonUnwrapped

@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.addHeader("Content-Type", "application/json; charset=utf-8");
    StringBuilder builder = new StringBuilder();
    String a = null;
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(req.getInputStream(), "UTF-8"))){
        while ((a = reader.readLine())!=null){
            builder.append(a);
        }
    }
    ObjectMapper objectMapper = new ObjectMapper();
    UserPojo pojo = objectMapper.readValue(builder.toString(),UserPojo.class);
   }

Пример изображения:

image

I have this library in classpath. And I try to use another version of jackson. When I use version 2.+ I have another crazy error Idea can't find class ObjectMapper only in this class.

On this picture i have class (ObjectMapper) not found error:

image

On this picture I DON'T have error:

image

but this two class in one package. How it's possible and How it's fix?

Add pom

<?xml version="1.0" encoding="UTF-8"?>
 4.0.0  PetClinic  cpw  1.0-SNAPSHOT  война  Клиника Pet Web  http://maven.apache.org  org.hibernate  hibernate-core 5.3.5. Финал    postgresql  postgresql  9.1-901-1.jdbc4   org.codehaus.jackson  jackson-core-asl  1.9.13    org.codehaus.jackson  jackson-mapper-asl  1.9.13    log4j  log4j  1.2.17   jstl  jstl  1.2    javax.servlet  servlet-api  2,5 при условии    регистрация общего пользования  регистрация общего пользования  1.1.1    taglibs  стандарт  1.1.2    commons-lang  commons-lang  2.1   org.codehaus.plexus  plexus-utils  1.1    junit  junit  4.8.2  тест    PetClinic  se  1.0-SNAPSHOT    org.mockito  mockito-all  1.10.19  test     PetClinicWeb   org.apache.maven.plugins  maven-compiler-plugin  3.3  1.7  1.7  UTF-8     org.jacoco  jacoco-maven-plugin  0.7.4.201502262128   $ {basedir} /target/coverage-reports/jacoco-unit.exec $ {basedir} /target/coverage-reports/jacoco-unit.exec   jacoco-initialize   prepare-agent     jacoco-site  пакет   отчет         

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Я добавляю Джексона, версия 2.7.8

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.7.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.7.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.8</version>
    </dependency>

Чем я очищаю и упаковываю в Maven Project

Но ObjectMapper не найден

<?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>PetClinic</groupId>
    <artifactId>PetClinicMain</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>

    <name>Pet Clinic</name>
    <url>http://maven.apache.org</url>

    <modules>
        <module>se</module>
        <module>clinic-pet-web</module>
    </modules>

</project>
0 голосов
/ 10 октября 2018

Я исправил это исключение.Я добавляю файлы jar Jackson в WEB-INF / lib. Как я понимаю, недостаточно добавить зависимость. введите описание изображения здесь

0 голосов
/ 09 октября 2018

Попробуйте использовать com.fasterxml jackson-annotations и jackson-core, и вообще лучше использовать версию 2+.Похоже, у вас класс JsonUnwrapped из версии 1, которая находится в пакете org.codehaus.jackson, в то время как некоторая другая библиотека использует версию 2 (которая имеет другой пакет - com.fasterxml.jackson).Попробуйте заменить зависимости Джексона следующим образом:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.8</version>
</dependency>

Что касается отсутствующего ObjectMapper, скорее всего, вы не обновили оператор импорта.Так что переключитесь на версию 2 и замените весь импорт кодхауса Джексона на fastxmlВажно иметь одинаковую версию всех библиотек Джексона.

Также, если у вашего проекта есть родительский проект, проверьте, импортирован ли там Джексон и какая у него версия.Он может иметь более старую версию, в этом случае соответственно изменить версию библиотеки или просто удалить версию, чтобы она была унаследована от родителя.

Подробнее см. https://dzone.com/articles/jackson-dependency-issue-in-spring-boot-with-maven

...