it-swarm.com.ru

Я получаю ошибку "Java.lang.ClassNotFoundException: com.google.gson.Gson", даже если она определена в моем пути к классам

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

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

Я импортирую его ближе к началу, используя:

import com.google.gson.Gson;

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

Gson g = new Gson();

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

<?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();

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

Спасибо

27
Fry

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

55
BalusC

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

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

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

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

5
Alexander Pogrebnyak

У меня была такая же проблема ...

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

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

Или, если вы хотите включить все банки в папку:

Bundle-ClassPath: lib/

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

3
Joseph Carroll

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

1
karthik339

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

Image Source metamug.com

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

0
Sorter

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

0
mwdoerner