Edited at

Google Plugin for Eclipse から Cloud Tools for Eclipse への移行

More than 1 year has passed since last update.


はじめに

Google Plugin for Eclipse が2018年01月で廃止されるということで、既存のプロジェクトを Cloud Tools for Eclipse で構築した開発環境へ移行してみた。

これまでEclipse 4.2 Juno を使ってきたが、せっかくなので最新版のEclipse 4.7 Oxygen で構築する。

これまでフレキシブル環境(Flexible Environment)でのみサポートされていたJava8が2017年07月からスタンダード環境(Standard Environment)でもサポートされるとの事だが、現時点ではベータ版ということで、今回はJava7で移行する。Java8への移行は正式サポート後に検討ということで。


やること

1.Eclipse 4.7 Oxygen のインストール

2.Google Cloud SDK のインストール

3.App Engine SDK for Java のインストール

4.Eclipse に Cloud Tools for Eclipse をインストール

5.既存プロジェクトを新環境へインポート

6.プロジェクトを App Engine Standard Project へ変換

7.Project Facets をJava7環境へ設定

8.Google Cloud SDK の既知の障害の対応 ※Ver 158.0.0 では解消していない

9.クリーンビルドを実行

10.エラー潰し

11.デプロイ


1.Eclipse 4.7 Oxygen のインストール

-事前にjdk1.7jdk1.8 の両方をインストールしておく

 環境変数のPathは、jdk1.8 で設定する

 ※Pathをjdk1.7 で設定するとEclipseが起動しない

-Eclipseダウンロード

 Eclipse IDE for Java Developers を選択


2.Google Cloud SDK のインストール

-Cloud SDK インストール

 gcloud init を実行する

 ※Google Cloud クライアントライブラリは、とりあえずインストールしない


3.App Engine SDK for Java のインストール

-Google Cloud SDK Shell を起動して

 gcloud components install app-engine-java

 を実行する ※少々時間がかかるので気長に待つ

 よく見ると進捗が判るようにちょっとずつ"="が増えてるw


4.Eclipse に Cloud Tools for Eclipse をインストール

-Eclipseを起動し、

 Help > Eclipse Marketplace...

eclipsemarketplace.png

 Find に Google Cloud と入力して検索して、[Install]ボタンを押下する


5.既存プロジェクトを新環境へインポート

-Eclipseの File > Import...


import.png

import2.png


6.プロジェクトを App Engine Standard Project へ変換

Eclipseのプロジェクトを右クリックしてConfigure > Convert to App Engine Standard Projectを選択

convert.png


7.Project Facets をJava7環境へ設定

Eclipseのプロジェクトを右クリックしてProperties > Project Facetsを選択

-App Engine Java Standard Environment > JRE7

-Dynamic Web Module > 2.5

-Java > 1.7

に設定する

projectfacets.png

※Java 1.7を選択する時に**Java Build Path > JRE System Library[JavaSE-1.7]のPathがjdk1.7.0_80になっているか確認


8.Google Cloud SDK の既知の障害の対応

参考サイト

インストール先のフォルダ名に半角スペースが含まれる事が問題らしぃ

これのせいでデプロイ時にcom.google.appengine.apiをインポートしているJSPがことごとくエラーになる

import文を削除して、クラスを全て完全修飾クラス名で書換えればエラーは消えるが、数が数だけに修正数が半端ないので、この修正はありえない・・・

と、いうことで Cloud SDK のインストールフォルダ名をから半角スペースを削除する事で対応する

space.png

-C:\Users\xxxxxxxx\AppData\Local\Google

 Cloud SDK -> CloudSDK へ変更

-EclipseのWindow > Preferences > Google Cloud Toolsを選択

SDK location:を上記フォルダ名に修正する

googlesdk.png


9.クリーンビルドを実行

EclipseのProject > clean...を実行

旧環境ではJSPのエラーチェックがされていなかったので、ここにきて色々とコーディングミスが出てきました・・・

これで普通にデプロイできてたのが不思議!?


10.エラー潰し


ここは個人差があると思うが、とりあえず私の環境で出たエラーを記載しておく

jdoconfig.xml に xsi:schemaLocation を追記


変更前:src\META-INF\jdoconfig.xml

<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">


変更後:src\META-INF\jdoconfig.xml

<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"
xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd">


web.xml の に を追記


変更前:web.xml

<security-constraint>

<web-resource-collection>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>


変更後:web.xml

<security-constraint>

<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>


POST,GETを大文字で記載しているとダメ

<form method="POST">~</form>

<form method="post">~</form>


11.デプロイ

Eclipse上部のGAEアイコンをクリックしてDeploy to App Engine Standardを選択

deploy.png

-Account:プロジェクトオーナーを選択

-Project:リストからプロジェクトを選択

-Promote the deployed version to receive traffic

 これにチェックを入れるとデプロイ後に即反映されるので要注意!

1~10までやれば、問題なくデプロイできると思うが、

-Deployが選択できない > 6.の実行忘れ

-JSPでエラー > 8.の設定忘れ

などが疑われる。。。


最後に・・・

色々なサイトを見ているとGoogle App Engine がJava8に対応していない事でJSPのデプロイが失敗するといった記載をよく見る

eclipse.ini に

-vm

C:/Program Files/Java/jdk1.7.0_80/bin/javaw.exe

を追記するとか色々書かれているが、Eclipse 4.7 Oxygen 自体がjdk1.7では起動しない・・・

結局の所、Cloud SDK のバグが原因だった訳だが、Java8対応うんぬんのフェイクにかなり苦労した・・・

あまりに苦労したのとCloud SDK のバグ情報を皆様に知って頂くために今回投稿させて頂きました。

2018年01月までにCloud Tools for Eclipse へ移行するために皆様の参考なれば幸いです。


以上