#はじめに
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.7 と jdk1.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...
Find に Google Cloud と入力して検索して、[Install]ボタンを押下する
##5.既存プロジェクトを新環境へインポート
-Eclipseの File > Import...
##6.プロジェクトを App Engine Standard Project へ変換
Eclipseのプロジェクトを右クリックしてConfigure > Convert to App Engine Standard Projectを選択
##7.Project Facets をJava7環境へ設定
Eclipseのプロジェクトを右クリックしてProperties > Project Facetsを選択
-App Engine Java Standard Environment > JRE7
-Dynamic Web Module > 2.5
-Java > 1.7
に設定する
※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 のインストールフォルダ名をから半角スペースを削除する事で対応する
-C:\Users\xxxxxxxx\AppData\Local\Google
Cloud SDK -> CloudSDK へ変更
-EclipseのWindow > Preferences > Google Cloud Tools**を選択
**SDK location:を上記フォルダ名に修正する
##9.クリーンビルドを実行
EclipseのProject > clean...**を実行
旧環境ではJSPのエラーチェックがされていなかったので、ここにきて色々とコーディングミスが出てきました・・・
これで普通にデプロイできてたのが不思議!?
##10.エラー潰し
ここは個人差があると思うが、とりあえず私の環境で出たエラーを記載しておく
jdoconfig.xml に xsi:schemaLocation を追記
<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">
<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 の に を追記
<security-constraint>
<web-resource-collection>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<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を選択
-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 へ移行するために皆様の参考なれば幸いです。
#以上