【问题标题】:I am getting "java.lang.ClassNotFoundException: com.google.gson.Gson" error even though it is defined in my classpath我收到“java.lang.ClassNotFoundException:com.google.gson.Gson”错误,即使它是在我的类路径中定义的
【发布时间】:2011-06-25 02:00:21
【问题描述】:

我正在尝试解析一些我使用 gson-1.6.jar 获得的 JSON 对象字符串,我已将其放置在与其他 .jar 相同的位置,并将其添加到我在 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>

以及我的构建路径窗口:

此时我有点迷茫。我试过谷歌,帖子基本上只是说要添加到你的构建路径中。有人有什么想法吗?

编辑:更多信息

引用 com.google.gson.GSON 的代码被 jsp 用作 bean。这个函数是从jsp调用的,函数一执行就报错。函数的第一行是:

Gson g = new Gson();

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

谢谢

【问题讨论】:

  • 你的代码是如何运行的?
  • 通过eclipse IDE,作为jsp,java文件作为bean使用
  • 在我的情况下,我在服务器路径中添加了 gson jar 并且它有效,我正在使用 weblogic

标签: java eclipse jar classpath


【解决方案1】:

如果是 JSP/Servlet Web 应用程序,您只需将第 3 方 JAR 文件放到 /WEB-INF/lib 文件夹中。如果项目是 Dynamic Web Project,那么 Eclipse 也会自动注意正确设置构建路径。您确实不需要需要摆弄 Eclipse 构建路径。不要忘记全部撤消。

【讨论】:

  • 我实际上也有该文件,但仍然没有运气。如果我引用了我的外部文件并在 /WEB-INF/lib 文件夹中有一个,会导致冲突吗?
  • 回顾一下,您确实将gson-1.6.jar 放入/WEB-INF/lib 吗? json-lib-2.4-jdk15.jar 不是 Gson。
  • 正确,我编辑了我的帖子以纠正我使用的是 Gson,而不是 json-lib。是的,Gson-1.6.jar 存在于我的 /WEB-INF/lib 以及我在构建路径中引用它的工作区 lib 文件夹中
  • 好的,我想我知道发生了什么,这很奇怪,可能是一个错误,但是当我将 jar 放入我的 /WEB-INF/lib 文件夹时,eclipse 中的项目似乎没有更新即使我重新启动了eclipse。在我右键单击更新项目后,该库出现并且现在可以编译 - 您是正确的,不需要手动参考。感谢您的耐心帮助。
  • @nick: 因为当目标运行时没有提供它时,你在运行时需要它。
【解决方案2】:

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

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

【讨论】:

  • 请注意,此部分仅对未在/WEB-INF/lib 中删除的外部项目或库有用。
【解决方案3】:

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

  • 转到项目属性。
  • 转到 Java 构建路径选项。
  • 然后将*.jar文件添加为外部jar。
  • 然后转到 order and export 选项并选择项目的库和 jar。
  • 保存当前更改并清理项目并再次运行项目。

【讨论】:

  • 感谢分享,这个方法也适用于我的一个安卓项目!
  • 非常感谢.. 同样,修复了我在 Windows 更新后突然开始在我的 android 项目中遇到的完全相同的错误.. 浪费了 6 个小时,直到我读到这篇文章......好生气好累.
  • 谢谢,我在一个 Android 项目中遇到了这个错误。您的解决方案已解决。
【解决方案4】:

我只是遇到了同样的问题...

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

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

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

Bundle-ClassPath: lib/

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

【讨论】:

  • 非常感谢。这对我处理 Eclipse Jetty 项目很有用。
【解决方案5】:

对我来说,通过在我的 APACHE/TOMCAT/lib 文件夹中添加罐子解决了这个问题! .

【讨论】:

  • 这使得 jar 成为您在 Tomcat 中运行的每个 webapp 的类路径的一部分。
【解决方案6】:

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

【讨论】:

    【解决方案7】:

    在标记选项卡中进行快速修复。

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

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

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

        &lt;!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --&gt; &lt;dependency&gt; &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt; &lt;artifactId&gt;gson&lt;/artifactId&gt; &lt;version&gt;2.8.6&lt;/version&gt; &lt;/dependency&gt;

        【讨论】:

          【解决方案10】:

          如果它可以帮助任何人进行故障排除,因为我作为第一次用户在 Eclipse 中浪费了 30 分钟 - 我已将 Gson jar 添加到构建路径库的“ModulePath”部分(与 JRE 系统库一起)。我需要将它添加到“类路径”以解决此错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-04-11
            • 1970-01-01
            • 2022-06-11
            • 1970-01-01
            • 1970-01-01
            • 2021-12-12
            • 1970-01-01
            • 2018-11-10
            相关资源
            最近更新 更多