Я получаю сообщение об ошибке «java.lang.ClassNotFoundException: com.google.gson.Gson», даже если оно определено в моем пути к классам - PullRequest
28 голосов
/ 10 февраля 2011

Я пытаюсь проанализировать некоторые строки объектов JSON, которые я получаю с помощью gson-1.6.jar. Я поместил его в то же место, что и другие мои .jars, и добавил его в мой путь сборки в eclipse.

Другие библиотеки работали нормально, когда я их добавил, и я могу использовать их без проблем, но когда я пытаюсь создать объект JSON, я получаю ошибку заголовка. С этой ошибкой я просмотрел другие вопросы, но не смог найти решения, в котором бы не было того, что я пробовал, или чего-то не связанного.

Я импортирую его в верхней части, используя:

import com.google.gson.Gson;

Затем используйте его позже в статической функции, например:

Gson g = new Gson();

Вот мой сгенерированный затмением файл пути к классу [Путь], замененный фактическим путем:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
        <attributes>
            <attribute name="owner.project.facets" value="java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5">
        <attributes>
            <attribute name="owner.project.facets" value="jst.web"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/>
    <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/>
    <classpathentry kind="output" path="build/classes"/>
</classpath>

а также мое окно пути сборки: Build Path Screen

Я немного растерялся на этом этапе. Я пробовал Google, и сообщения в основном просто говорят, чтобы добавить к вашему пути сборки. У кого-нибудь есть идеи?

Редактировать: Подробнее

Код, ссылающийся на com.google.gson.GSON, используется в качестве bean-компонента jsp. Эта функция вызывается из jsp, и ошибка возникает, как только функция выполняется. Первая строка в функции:

Gson g = new Gson();

Кажется, что скомпилировать и развернуть нормально, но когда он выполняется, я получаю сообщение об ошибке.

Спасибо

Ответы [ 8 ]

57 голосов
/ 10 февраля 2011

В случае веб-приложения JSP / Servlet вам просто нужно удалить сторонние JAR-файлы в папку /WEB-INF/lib. Если проект представляет собой Dynamic Web Project , то Eclipse автоматически позаботится о правильной настройке пути сборки. Вам не нужно возиться с Eclipse buildpath. Не забудьте отменить все это.

20 голосов
/ 15 мая 2012

Я столкнулся с той же проблемой и попробовал вышеуказанные решения, но ни одно из них не помогло мне. Затем я попробовал следующие шаги, и проблема была решена:

  • Перейти к свойствам проекта.
  • Перейти к опции пути сборки Java.
  • Затем добавьте *.jar файл в качестве внешнего файла.
  • Затем перейдите к порядку экспорта и экспорта и выберите библиотеки и банки проекта.
  • сохранить текущие изменения, очистить проект и снова запустить проект.
5 голосов
/ 10 февраля 2011

Нажмите Deployment Assembly (прямо над Java Build Path, который вы показываете как активный) и убедитесь, что вы видите там json-lib-2.4-jdk15.jar.

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

3 голосов
/ 25 мая 2012

У меня просто возникла та же проблема ...

Чтобы решить проблему (по крайней мере, в моем случае), убедитесь, что вы включили папку lib в путь к классу вашего пакета:

Manifest-Version: 1.0
... 
Bundle-ClassPath: lib/gson-1.6.jar,
 .
...

Или, если вы хотите включить все jar-файлы в папку:

Bundle-ClassPath: lib/

Вам все равно нужно будет поместить jar-файлы в путь сборки java, как показано выше.Тогда ваши импортированные банки должны появиться в папке «Библиотеки со ссылками»

1 голос
/ 08 января 2013

Ну, для меня проблема была решена добавлением jar-файлов в мою папку APACHE / TOMCAT / lib! .

0 голосов
/ 11 июля 2019

Я столкнулся с вышеуказанной ошибкой при сборке и запуске в Eclipse, где все было нормально, за исключением этой ошибки.Однако я обнаружил, что сборка Maven не удалась и мне нужно было включить Gson в мой pom.xml.После исправления pom.xml все стало на свои места.

0 голосов
/ 25 сентября 2018

Выполните Быстрое исправление на вкладке Маркеры.

Image Source metamug.com

Ссылка: https://metamug.com/blog/eclipse-gson-class-not-found

0 голосов
/ 23 мая 2017

У меня была такая же проблема при разработке узла / плагина KNIME в среде Eclipse. Решением было не только добавить gson.jar в качестве внешнего JAR-файла в путь сборки, но и перейти на plugin.xml, затем на вкладку Dependencies и добавить com.google.gson в качестве необходимого плагина.

...