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

时间:2014-07-31 22:19:21

标签: 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添加到您的webapp的/ WEB-INF / lib文件夹中?”但是,我没有在{{1}中看到lib文件夹如上图所示。我想知道我做错了什么?

更新了显示WEB-INF

的新屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:1)

我从未使用过NetBeans,但我认为你必须在Tomcat引擎本身的内部类路径和应用程序的类路径之间做出改变。 Tomcat将其分离,因此Web应用程序不需要使用Tomcat使用的相同版本的库。 是不是还有另一种方法来定义项目与gson库的依赖关系? F.E.使用maven依赖项并生成项目文件。

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

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