Google Calendar API示例 - 纯Java

时间:2014-09-07 10:46:21

标签: java google-api-java-client

我尝试设置此处记录的基本示例http://goo.gl/9WudGn

我似乎无法运行应用程序而不会出现一个错误或其他错误。

运行之前没有错误,但是当我这样做时,我得到以下运行时错误。

java.lang.NoClassDefFoundError: org/mortbay/jetty/Handler
    at com.azinky.CalendarSample.authorize(CalendarSample.java:95)
    at com.azinky.CalendarSample.main(CalendarSample.java:107)
Caused by: java.lang.ClassNotFoundException: org.mortbay.jetty.Handler

然后我在我的类路径中包含两个jar文件, jetty-6.1.26.jar jetty-util-6.1.26.jar

现在我在运行时收到另一个错误

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 com.azinky.CalendarSample.authorize(CalendarSample.java:95)
    at com.azinky.CalendarSample.main(CalendarSample.java:107)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

我是否需要在我的机器上安装jetty才能运行此示例? (文档没有说我需要)

这是我的完整类路径

<?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/JavaSE-1.7"/>
    <classpathentry kind="lib" path="libs/google-api-client-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/google-oauth-client-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/google-http-client-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/jsr305-1.3.9.jar"/>
    <classpathentry kind="lib" path="libs/google-api-services-calendar-v3-rev92-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/google-http-client-jackson2-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/google-oauth-client-jetty-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/google-oauth-client-java6-1.19.0.jar"/>
    <classpathentry kind="lib" path="libs/jackson-core-2.1.3.jar"/>
    <classpathentry kind="lib" path="libs/jetty-6.1.26.jar"/>
    <classpathentry kind="lib" path="libs/jetty-util-6.1.26.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

2 个答案:

答案 0 :(得分:2)

第一堂课需要org.mortbay.jetty.jar,第二堂课需要javax.servlet.jar

下载并将其添加到您的类路径中,或者如果您使用maven,请查看maven存储库并将缺少的依赖项添加到您的pom.xml。

答案 1 :(得分:2)

Jens的回答是正确的,你还需要一些额外的罐子。 Jetty用于构建快速Web服务器,以使OAuth流程更顺畅。使用Google API并不是强制性的,这就是为什么它没有在wiki中列出,但它对命令行应用程序有帮助。

为了更好地管理您的依赖项,我强烈建议您使用maven。由于您链接到的测试项目有一个pom.xml文件来描述其依赖项,因此使用Maven构建项目会容易得多。

如果您使用Eclipse,您可以通过运行以下命令告诉maven为eclipse构建项目:

mvn eclipse:eclipse

您会找到更多信息here

Eclipse还有几个插件可以更轻松地与Maven集成,IntelliJ可以直接集成。