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

Fry*_*Fry 28 java eclipse jar classpath

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

其他库在我添加它们时工作正常,我可以毫无问题地使用它们,但是当我尝试创建JSON对象时,我得到了名义错误.我已经通过这个错误查看了其他问题,但我找不到一个不涉及我尝试过的东西的解决方案或者一些无关的东西.

我使用以下方法将其导入顶部附近:

import com.google.gson.Gson;
Run Code Online (Sandbox Code Playgroud)

然后在静态函数中使用它,如下所示:

Gson g = new Gson();
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

以及我的构建路径窗口: 构建路径屏幕

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

编辑:更多信息

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

Gson g = new Gson();
Run Code Online (Sandbox Code Playgroud)

它似乎编译和部署正常,但当它执行时,我收到错误消息.

谢谢

Bal*_*usC 57

对于JSP/Servlet Web应用程序,您只需要将第三方JAR文件放在/WEB-INF/lib文件夹中.如果项目是动态Web项目,那么Eclipse也会自动关注设置构建路径.你不是需要使用Eclipse构建路径摆弄.别忘了全部撤消.

  • 好吧,我想我知道发生了什么,这很奇怪,可能是一个错误,但似乎当我将 jar 放在 /WEB-INF/lib 文件夹中时,即使我重新启动 eclipse,eclipse 中的项目也没有更新。在我右键单击更新项目后,库出现并立即编译 - 您是正确的,不需要手动参考。感谢您的帮助和耐心。 (3认同)
  • 我实际上也有那里的文件,但仍然没有运气.如果我引用了我的外部并在/ WEB-INF/lib文件夹中有一个,它会引起冲突吗? (2认同)

kar*_*arn 20

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

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


Ale*_*yak 5

单击Deployment Assembly(右上方Java Build Path显示为活动状态)并确保在那里看到json-lib-2.4-jdk15.jar.

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

  • 请注意,此部分仅对未放入 `/WEB-INF/lib` 的外部项目或库有用。 (2认同)