【问题标题】:there's special jar to add for javax/servlet/http/HttpServletRequest为 javax/servlet/http/HttpServletRequest 添加了特殊的 jar
【发布时间】:2014-08-28 22:49:23
【问题描述】:

我有一个使用 Google Calendar API 的项目,在这台 PC 上我配置了 tomcat,我可以毫无问题地运行它,但是当我尝试在另一台 PC 上运行它时,我开始收到异常,另一台的 PC 没有'没有安装tomcat,因为它们是我的客户PC,问题是,即使在客户的PC上我也需要安装和配置tomcat吗?或者我缺少一个要添加到类路径的 .jar?我使用代码检查了当前项目的类路径,并且所有 jar 都正确位于我的“lib”文件夹中,我该怎么办?

这是例外:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver.getRedirectUri(LocalServerReceiver.java:98)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:76)
at control.GoogleCalendar2.authorize(GoogleCalendar2.java:132)
at control.GoogleCalendar2.<init>(GoogleCalendar2.java:54)
at Formas.Principal.<init>(Principal.java:37)
at Formas.Principal$11.run(Principal.java:376)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 20 more

我这个项目的类路径是这样的:

/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/commons-logging-1.1.1-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/commons-logging-1.1.1.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-android-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-android-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-appengine-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-appengine-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-gson-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-gson-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-jackson2-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-jackson2-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-java6-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-java6-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-servlet-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-client-servlet-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-services-calendar-v3-rev76-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-api-services-calendar-v3-rev76-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-android-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-android-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-appengine-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-appengine-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-gson-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-gson-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-jackson2-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-jackson2-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-jdo-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-http-client-jdo-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-appengine-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-appengine-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-java6-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-java6-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-jetty-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-jetty-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-servlet-1.17.0-rc-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/google-oauth-client-servlet-1.17.0-rc.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/gson-2.1-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/gson-2.1.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jackson-core-2.1.3-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jackson-core-2.1.3.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/javax.mail.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jcalendar-1.4.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jdo2-api-2.3-eb-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jdo2-api-2.3-eb.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jetty-6.1.26-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jetty-6.1.26.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jetty-util-6.1.26-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jetty-util-6.1.26.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/json-simple-1.1.1.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/jsr305-1.3.9.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/transaction-api-1.1-sources.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/transaction-api-1.1.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/commons-codec-1.6.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/commons-logging-1.1.3.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/fluent-hc-4.3.4.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/httpclient-4.3.4.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/httpclient-cache-4.3.4.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/httpcore-4.3.2.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/httpmime-4.3.4.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/lib/guava-17.0.jar
/Users/josemiguelledonnieblas/NetBeansProjects/capaPresentacion_expeDiente/build/classes/

我知道有很多 jar,但是当我下载 Google 日历的 java 类库时,我只是添加了所有 jar 以避免出现问题。

【问题讨论】:

    标签: java


    【解决方案1】:

    看起来您缺少 servlet-api jar。你不需要在他们的电脑上安装 tomcat,除非他们无法访问你电脑的 tomcat 实例,并且你想在他们的电脑上本地运行服务器

    【讨论】:

    • 我没有在我的电脑上使用 tomcat 实例,我将它安装到另一个项目中,但为此我使用租用的带有 BlueHost 的服务器
    • 在这种情况下,你根本不需要tomcat。我猜你的类路径中有一些安装了tomcat的PC的tomcat库,但不是客户端的PC。听起来你缺少罐子。像servlet-api
    • 我尝试添加servlet-api.jar,似乎问题消失了,但是当我调用一些调用webservice(由blueHost托管)的方法时它什么也没做,我离开了我的家,我会在晚上做一些测试
    • 什么样的服务?您可以通过 HTTP 访问端点吗?有没有办法证明 bluehost 上的服务运行正常?
    • 只有在构建路径上配置了servlet-api-2.5.jar 之后,我才能运行Google Calendar API sample Java code。见stackoverflow.com/questions/8521851/…
    【解决方案2】:

    HttpServletRequest 是 Java EE API 的一部分,由 Tomcat 等 servlet 容器提供。如果您的程序尝试使用HttpServletRequest 做某事,则意味着它希望充当 Web 服务器并通过 HTTP 接收请求。如果是这种情况,那么您需要在 Tomcat 之类的东西中运行它——尽管我不清楚为什么 Google 的日历客户端 API 会有 servlet。

    【讨论】:

    • 我猜 OP 正在通过 java api 构建请求
    • 当我尝试授权凭证以开始使用日历 API 时抛出异常,我的程序的其余部分是关于通过 json 向 bluehost 服务器请求的,所以,你认为我需要在每台电脑上安装 tomcat 吗?
    • HttpServletRequestServlet API 的一部分,而后者又是 EE API 的一部分,但也可以单独使用。 Tomcat 证明了这一点。它不是 J2EE 容器。
    猜你喜欢
    • 2023-04-08
    • 2021-10-20
    • 2010-12-31
    • 2012-01-14
    • 2022-12-22
    • 1970-01-01
    • 2018-10-15
    • 2013-03-14
    相关资源
    最近更新 更多