Я получаю ошибку 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>

а также окно моего пути сборки: Экран пути сборки

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

Изменить: дополнительная информация

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

Gson g = new Gson();

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

Спасибо


person Fry    schedule 10.02.2011    source источник
comment
Как вы запускаете свой код?   -  person Nick    schedule 10.02.2011
comment
Через eclipse IDE, как jsp с файлом java, используемым как bean-компонент   -  person Fry    schedule 10.02.2011
comment
в моем случае я добавил gson jar в путь к серверу, и это сработало, я использую weblogic   -  person Derick Daniel    schedule 30.05.2018


Ответы (9)


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

person BalusC    schedule 10.02.2011
comment
У меня тоже есть файл, но все равно не повезло. Вызовет ли это конфликт, если я буду ссылаться на свой внешний, а он будет в папке / WEB-INF / lib? - person Fry; 10.02.2011
comment
Напомним, вы уронили gson-1.6.jar в /WEB-INF/lib? json-lib-2.4-jdk15.jar не Gson. - person BalusC; 10.02.2011
comment
Правильно, я отредактировал свой пост, чтобы исправить то, что я использую Gson, а не json-lib. И да, Gson-1.6.jar существует в моем / WEB-INF / lib, а также в моей папке lib рабочего пространства, откуда я ссылаюсь на него в пути сборки - person Fry; 10.02.2011
comment
Хорошо, и когда вы получили это исключение? Во время запуска какого-то класса с main() методом в качестве приложения внутри проекта? Или при запуске кода JSP / сервлета? Т.е. какой именно код использует Gson и как именно он выполняется? Обратите внимание, что дублирующая ссылка в пути сборки не требуется. Эта библиотека должна существовать только в библиотеках веб-приложений, которыми Eclipse автоматически управляет. Удалите все ссылки на руководство. - person BalusC; 10.02.2011
comment
Хорошо, обновленный пост внизу с дополнительной информацией. Хорошо, если он у меня просто находится в папке webapps / lib, я могу ссылаться на него оттуда, но я просто попробовал его без ссылки на путь сборки и получил ошибки компиляции, которые не удалось разрешить при импорте - person Fry; 10.02.2011
comment
Хорошо, я думаю, что знаю, что произошло, это странно и, вероятно, ошибка, но кажется, что когда я помещаю банку в свою папку / WEB-INF / lib, проект в eclipse не обновлялся, даже когда я перезапускал eclipse. После того, как я щелкнул правой кнопкой мыши и обновил проект, библиотека появилась и теперь компилируется - вы правы, справочная информация не нужна. Спасибо за вашу помощь и терпение. - person Fry; 10.02.2011
comment
Спасибо, чувак, я часто сталкивался с этой проблемой. - person kiwicomb123; 24.01.2017
comment
@BalusC, почему Gson импортировал, хотя Maven не работает (объем: -компилировать / предоставил оба), но он работал, если вручную сохранял GSON в папке web-INF / lib ?? любая идея? - person nick; 10.04.2018
comment
@nick: потому что он вам нужен во время выполнения, когда он не предоставляется целевой средой выполнения. - person BalusC; 10.04.2018

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

  • Зайдите в свойства проекта.
  • Перейдите к параметру Путь сборки Java.
  • Затем добавьте *.jar файл как внешний jar.
  • Затем перейдите к опции заказа и экспорта и выберите библиотеки и jar-файлы проекта.
  • сохраните текущие изменения, очистите проект и снова запустите проект.
person karn    schedule 15.05.2012
comment
Спасибо, что поделились, этот метод также работал для моего проекта Android! - person Kingsolmn; 02.11.2012
comment
Большое вам спасибо .. Также исправлена ​​та же самая ошибка, которую я внезапно начал получать в моем проекте Android после обновления Windows .. 6 часов потрачено впустую, пока я не прочитал это ... так зол и устал. - person Todd Painton; 14.06.2013
comment
Спасибо, я получал эту ошибку в проекте Android. Ваше решение исправило это. - person Koderok; 16.11.2014

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

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

person Alexander Pogrebnyak    schedule 10.02.2011
comment
Обратите внимание, что этот раздел полезен только для внешних проектов или библиотек, которые не удаляются в /WEB-INF/lib. - person BalusC; 10.02.2011

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

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

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

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

Bundle-ClassPath: lib/

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

person Joseph Carroll    schedule 25.05.2012
comment
Большое спасибо. Это сработало для меня, работая над проектом Eclipse Jetty. - person Chandrani H; 14.01.2020

Что ж, для меня проблема была решена путем добавления банок в мою папку APACHE / TOMCAT / lib! .

person karthik339    schedule 08.01.2013
comment
Это делает jar частью пути к классам для каждого веб-приложения, которое вы запускаете в Tomcat. - person nitind; 29.05.2013

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

person mwdoerner    schedule 23.05.2017

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

"Источник".

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

person Sorter    schedule 25.09.2018

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

person Jeff Taylor    schedule 11.07.2019

вы можете включить зависимость maven, как показано ниже, в свой файл pom.xml

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency>

person Pamidisetti Manikanta    schedule 22.02.2021