Googleカレンダーで遊ぶ

会社で使っているスケジュールボードをリモートからも見たくてGoogleカレンダーと同期できないか思案してのPG。

久々なので、Eclipse3.6の環境をきれいにクリーンインストールしてからスタート。

まずは、GDateのサンプルをダウンロード。Eclipseで新規Javaプロジェクトを構築して解凍した一式を配置。

ただ、J2EEライブラリへのパスが無かったので、 GlassFishのライブラリを追加。最初は該当JARを探すも、

1.windows>設定>サーバ>ランタイム環境より、追加でJ2EEコンテナを追加

2.プロジェクトのビルドパスに ライブラリの追加>サーバ・ランタイムを行う

で適当なライブラリを追加してくれるので、コンパイルは通るようになる。

今回動かしたいカレンダーのサンプルのREADME.txtを見ると

The application can be built and run using the provided Ant build file found at

gdata/java/build.xml. The sample can be run in the following manner:

1. Edit gdata/java/build.properties to enter your Google Account username and

password, as well as the feed URI on which you want to test the sample.

2. Invoke the sample using the following commandline:

ant -f gdata/java/build.xml sample.calendar.run

とあるので、gdate直下(今回はプロジェクト直下)にbuild-samplesスクリプトは以下の、build.propertiesをコピーして、build.samples.xmlのsample.calendar.runを実効

すると

Buildfile: C:\Users\jun\workspace\GoogleCalenderSample\build-samples.xml

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

sample.calendar.build:

sample.calendar.run:

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

sample.calendar.build:

sample.calendar.eventfeed.run:

[java] java.lang.NoClassDefFoundError: sample/calendar/EventFeedDemo

[java] Caused by: java.lang.ClassNotFoundException: sample.calendar.EventFeedDemo

[java] at java.net.URLClassLoader$1.run(Unknown Source)

[java] at java.security.AccessController.doPrivileged(Native Method)

[java] at java.net.URLClassLoader.findClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] Could not find the main class: sample.calendar.EventFeedDemo. Program will exit.

[java] Exception in thread "main"

[java] Java Result: 1

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

sample.calendar.build:

sample.calendar.calendarfeed.run:

[java] java.lang.NoClassDefFoundError: sample/calendar/CalendarFeedDemo

[java] Caused by: java.lang.ClassNotFoundException: sample.calendar.CalendarFeedDemo

[java] at java.net.URLClassLoader$1.run(Unknown Source)

[java] at java.security.AccessController.doPrivileged(Native Method)

[java] at java.net.URLClassLoader.findClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] Could not find the main class: sample.calendar.CalendarFeedDemo. Program will exit.

[java] Exception in thread "main"

[java] Java Result: 1

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

sample.calendar.build:

sample.calendar.aclfeed.run:

[java] java.lang.NoClassDefFoundError: sample/calendar/AclFeedDemo

[java] Caused by: java.lang.ClassNotFoundException: sample.calendar.AclFeedDemo

[java] at java.net.URLClassLoader$1.run(Unknown Source)

[java] at java.security.AccessController.doPrivileged(Native Method)

[java] at java.net.URLClassLoader.findClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

[java] at java.lang.ClassLoader.loadClass(Unknown Source)

[java] Could not find the main class: sample.calendar.AclFeedDemo. Program will exit.

[java] Exception in thread "main"

[java] Java Result: 1

BUILD SUCCESSFUL

Total time: 1 second

と出る。解凍したパッケージを適切にプロジェクトに配置できていなかったので修正して実施。

(SRCフォルダと、build.xmlの関係が不適切だった)

Buildfile: C:\Users\jun\workspace\GoogleCalendarTest\gdate\build-samples.xml

sample.appsforyourdomain.dependencies:

template.require.service.jar:

BUILD FAILED

C:\Users\jun\workspace\GoogleCalendarTest\gdate\build-samples\appsforyourdomain.xml:40: The following error occurred while executing this line:

C:\Users\jun\workspace\GoogleCalendarTest\gdate\build-samples\core.xml:61: Missing dependency jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\build-samples/..//lib/gdata-appsforyourdomain-${appsforyourdomain.spec.version}.jar

Please run "ant appsforyourdomain.build.appsforyourdomain".

Total time: 322 milliseconds

今度は、version.propertiesを適当なフォルダに置けていなかった。

配置を修正してひとまず、サンプルは動いた。でも、内部エラーも出ている。今日はひとまずここまで。

Buildfile: C:\Users\jun\workspace\GoogleCalendarTest\gdate\build-samples.xml

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

[javac] Compiling 2 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\classes

[javac] 注:C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\CommonUtils.java は推奨されない API を使用またはオーバーライドしています。

[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\lib\sample-util.jar

sample.calendar.build:

[javac] Compiling 4 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\classes

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedPartialDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\CalendarFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\AclFeedDemo.jar

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

[javac] Compiling 2 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\classes

[javac] 注:C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\CommonUtils.java は推奨されない API を使用またはオーバーライドしています。

[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

sample.calendar.build:

[javac] Compiling 4 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\classes

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedPartialDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\CalendarFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\AclFeedDemo.jar

sample.calendar.run:

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

[javac] Compiling 2 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\classes

[javac] 注:C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\CommonUtils.java は推奨されない API を使用またはオーバーライドしています。

[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\lib\sample-util.jar

sample.calendar.build:

[javac] Compiling 4 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\classes

sample.calendar.eventfeed.run:

[java] Your calendars:

[java]

[java] ��{�̏j��

[java] Printing all events

[java] All events on your calendar:

[java] test

[java] Full text query

[java] Events matching Tennis:

[java] Events from 2007-01-05 to 2007-01-07:

[java] Successfully created event Tennis with Mike

[java] Successfully created quick add event Tennis with John April 1

[java] Successfully created web content event World Cup

[java] Successfully created recurring event Tennis with Dan

[java] Event's new title is "Important meeting".

[java] Set a 15 minute EMAIL reminder for the event.

[java] Successfully deleted all events via batch request.

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

[javac] Compiling 2 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\classes

[javac] 注:C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\CommonUtils.java は推奨されない API を使用またはオーバーライドしています。

[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\lib\sample-util.jar

sample.calendar.build:

[javac] Compiling 4 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\classes

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedPartialDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\CalendarFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\AclFeedDemo.jar

sample.calendar.calendarfeed.run:

[java] Calendars in metafeed

[java]

[java] ��{�̏j��

[java] Calendars in allcalendars feed

[java]

[java] ��{�̏j��

[java] Calendars in owncalendars feed

[java]

[java] Creating a secondary calendar

[java] Updating the secondary calendar

[java] Deleting the secondary calendar

[java] The server had a problem handling your request.

[java] com.google.gdata.util.ServiceException: Internal Server Error

[java] Internal Error

[java] at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:624)

[java] at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563)

[java] at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552)

[java] at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530)

[java] at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535)

[java] at com.google.gdata.client.Service.delete(Service.java:1738)

[java] at com.google.gdata.client.GoogleService.delete(GoogleService.java:699)

[java] at com.google.gdata.data.BaseEntry.delete(BaseEntry.java:669)

[java] at sample.calendar.CalendarFeedDemo.deleteCalendar(CalendarFeedDemo.java:173)

[java] at sample.calendar.CalendarFeedDemo.main(CalendarFeedDemo.java:277)

sample.calendar.dependencies:

template.require.service.jar:

sample.core.dependencies:

core.sample.core.util.build:

[javac] Compiling 2 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\classes

[javac] 注:C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\CommonUtils.java は推奨されない API を使用またはオーバーライドしています。

[javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\util\lib\sample-util.jar

sample.calendar.build:

[javac] Compiling 4 source files to C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\classes

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\EventFeedPartialDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\CalendarFeedDemo.jar

[jar] Building jar: C:\Users\jun\workspace\GoogleCalendarTest\gdate\sample\calendar\lib\AclFeedDemo.jar

sample.calendar.aclfeed.run:

[java] Access control lists for your calendars:

[java] Calendar "":

[java] Scope: Type=USER ()

[java] Role: http://schemas.google.com/gCal/2005#owner

BUILD SUCCESSFUL

Total time: 21 seconds

 

PS:Eclipse3.6でAnt使ったが、Taskへのリンク機能が超便利。また、外部ファイルをproperty file属性で読み込んでいるのも知らないテクなので関心。Googleのサンプルでは、JARファイルのバージョンをversion.xmlとして外出しにして、指定したバージョンのファイルを取得する作りとなっていた。Eclipseプロジェクトのビルドパスが動的に指定出来れば良い手として使えそう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です