我收到“java.lang.ClassNotFoundException:com.google.gson.Gson”错误,即使它是在我的类路径中定义的

时间:2011-02-10 18:52:41

标签: java eclipse jar classpath

我正在尝试使用gson-1.6.jar解析一些我正在使用gson-1.6.jar的JSON对象字符串。我将它放在与其他.jars相同的位置,并将其添加到eclipse中的buildpath中。

当我添加它们时,其他库工作正常,我可以毫无问题地使用它们,但是当我尝试创建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

此时我有点失落。我已经尝试了谷歌和帖子基本上只是说添加到您的构建路径。有人有什么想法吗?

修改:更多信息

引用com.google.gson.GSON的代码由jsp用作bean。从jsp调用此函数,一旦执行该函数就会发生错误。该函数的第一行是:

Gson g = new Gson();

似乎编译和部署很好,但是当它执行时,我收到错误消息。

由于

9 个答案:

答案 0 :(得分:57)

如果是JSP / Servlet Web应用程序,您只需要删除/WEB-INF/lib文件夹中的第三方JAR文件。如果项目是动态Web项目,那么Eclipse将自动关注设置构建路径。你需要摆弄Eclipse buildpath。别忘了全部撤消。

答案 1 :(得分:20)

我遇到了同样的问题并尝试了上述解决方案,但没有一个能为我工作。然后我尝试了以下步骤,问题解决了:

  • 转到项目属性。
  • 转到Java Build Path选项。
  • 然后将*.jar文件添加为外部jar。
  • 然后转到订单和导出选项并选择项目的库和jar。
  • 保存当前更改并清理项目并再次运行项目。

答案 2 :(得分:5)

点击Deployment Assembly(显示为有效的Java Build Path上方),并确保在那里看到json-lib-2.4-jdk15.jar。

通常,您应该将其添加到构建路径并从项目中导出它。一旦导出,您将看到WTP警告它不是部署的一部分。选择Quick Fix选项并将其添加到部署路径中。

答案 3 :(得分:3)

我刚遇到同样的问题......

要解决此问题(至少在我的情况下),请确保已在包类路径中包含lib文件夹:

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

或者如果你想在文件夹中包含所有jar:

Bundle-ClassPath: lib/

您仍然需要将jar文件放在java构建路径上,如上所示。然后导入的jar应出现在“Referenced Libraries”文件夹中

答案 4 :(得分:1)

对我来说,通过在我的APACHE / TOMCAT / lib文件夹中添加jar来解决问题!

答案 5 :(得分:0)

在Eclipse环境中开发KNIME Node /插件时遇到了同样的问题。解决方案不仅是将gson.jar作为外部JAR添加到构建路径,还需要转到plugin.xml,然后转到Dependencies选项卡并添加com.google.gson作为必需的插件。

答案 6 :(得分:0)

在“标记”标签中进行快速修复。

Image Source metamug.com

参考:https://metamug.com/blog/eclipse-gson-class-not-found

答案 7 :(得分:0)

在Eclipse中构建和运行时遇到了上述错误,除了该错误外,其他一切似乎都很好。但是,我发现Maven构建失败,需要在pom.xml中包含Gson。修复pom.xml之后,一切都准备就绪。

答案 8 :(得分:0)

您可以在 pom.xml 文件中包含如下所示的 maven 依赖

<!-- 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>