java.lang.ClassNotFoundException : com. google.gson.Gson 尽管 Apache 服务器中有 JAR

标签 java servlets gson classnotfoundexception

在 Stackoverflow 上阅读许多有关相同错误的帖子。 但我仍然收到以下错误(Stacktrace):

Jul 31, 2014 3:08:54 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet TEST_Authenticate threw exception
java.lang.ClassNotFoundException: com.google.gson.Gson
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at TEST_Authenticate.doGet(TEST_Authenticate.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:744)

第 70 行在我的代码中如下:

out.println(new Gson().toJson(TESTAuthenticate("myemail@mydomain.com")));

我正在使用 Netbeans,这是我的项目的结构。

enter image description here

我已将 JAR 包含在我的服务器 lib 文件夹中,如上图所示。

有人在 this post 中回复“您是否将 jar 添加到了 web 应用程序的/WEB-INF/lib 文件夹中?”,但是,我没有在 WEB-INF 中看到 lib 文件夹,因为如上图所示。我想知道我做错了什么?

更新的新屏幕截图显示 gson-2.2.4.jar

enter image description here

最佳答案

我从未使用过 NetBeans,但我认为您必须区分 Tomcat 引擎本身的内部类路径和应用程序的类路径。 Tomcat 将其分开,因此 Web 应用程序不需要使用 Tomcat 使用的相同版本的库。 是否有另一种方法可以定义项目与 gson 库的依赖关系? F.e.使用maven依赖并生成项目文件。

我注意到的第二件事: gson-2.2.4-javadoc.jar 的内容是什么?它包含类还是仅包含 javadoc html 文件。

通常,在构建 war 文件(使用 maven)时,这些依赖项将被添加到生成的 .war 文件中的 WEB-INF/lib 文件夹中。

关于java.lang.ClassNotFoundException : com. google.gson.Gson 尽管 Apache 服务器中有 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069869/

相关文章:

java - 如何在 Jetty 8 中添加请求日志过滤器?

java - 在webapps tomcat下创建新项目出错

java - 使用 Ajax 发布 JSON 数组并使用 Gson 在 servlet 中解析

java - 如何用接口(interface)序列化一个类?

java - 需要将下面的 JSON 对象转换为 String JAVA

java - 什么是NullPointerException,我该如何解决?

java - 将 JSON 键解析为字段值

android - GSON fromJson 返回 null

java - Guava 缓存 RemovalListener 未调用

java - WICKET:控制更改 CheckBox 时组件的可见性