俺の雑記帳

My random memorandumです。(つまり、個人的な備忘録であり、その点ご容赦を。)

Eclipse, Java, Google App Engine の開発環境構築

ノートPCの方に、GAE, Java7, Google Plugin for Eclipse の環境構築。
(デスクトップPCの古い環境は、ローカルで動作するため、取敢えず動作確認要に保存する。)

Google App Engine 環境構築(Windows+Eclipse+Java)|軽Lab
を基本とするが、All In One で 日本語環境の Pleiades は、前回の会社のPCと同様、使わない。
(2011年の書籍『作ればわかる! Google App Engine for Java プログラミング』も参照。)

【Java】JREだけ欲しい(実行環境だけ)
eclipseをこのJREで動かすなら、解凍したフォルダの中の「jre1.7.0_10」などのフォルダを、「jre」の名前にして、eclipseのフォルダの中に入れる。これだけでOK。」とのこと。

今回は以下のJava7アーカイブページから、上記のページに従い、「インストーラーなし」「*.exe ではない方」→ jre-7u80-windows-x64.tar.gz をダウンロード:
Java Archive Downloads - Java SE 7
(DLには会員登録とログインが必要。古いOracleの会員-OTN がまだ使えた。)

  ※ 後述するが、結局、jdk-7u80-windows-x64.exe から入れた。

Neon(4.6)はJava8以上が必要のようなので、Mars(4.5)をインストールしなおす必要あり?

Downloading and Installing the Plugin  |  Google Plugin for Eclipse  |  Google Developers
には、Java7環境が必要、かつ、NeonIDEの一つとして書いてあるのに、
↓のURLでは、Java8以上が必要、とある。↑が誤り?
Eclipse/Installation - Eclipsepedia

EclipseをDLし直し―をDL(eclipse-java-mars-2-win32-x86_64.zip):
Mars Eclipse
(ちなみに会社デスクトップのは Eclipse(3.7)Indigo。(次が4.2 Juno?))

⇒起動した。
最初に、「Select a workplace」と訊かれて、
「C:\Users\GCNUser\workspace」がデフォルトで表示されるが、デスクトップPCの時と同様、
「C:\Users\GCNUser\workspace\eclipse」と末尾に付けた。


Google Plugin for Eclipse」:
https://developers.google.com/eclipse/docs/download?hl=ja
2018年1月に使えなくなるけど!、元の環境との違いを少なくして、今トラブルを少なく、思い出しやすくするため、敢えてdeprecatedな「Google Plugin for Eclipse」をインストール。2018年1月には、「Cloud Tools for Eclipse」に移行する必要あり。

Google Plugin for Eclipse 4.4/4.5/4.6 (3.9.6v20170329-1604) と
Google App Engine Engine Java SDK 1.9.34 を選ぶ。
GWT(Google Web Tookit)は選ばず。)


GAEプロジェクトは新規作成せず、
File > Import > General > Existing Projects into Workspace
で、今回はUSBメモリから、"Copy projects into workspace" をチェックし、プロジェクトをインポート。

appengine-web.xml を、テスト環境のProject ID に書換え。バージョンの数字も一つ上げる。(下の8)

<!-- <application>【URLのサブドメイン名に同じ】</application> <version>8</version> -->
<application>【テスト用のプロジェクト名】</application> <version>8</version>

これにより↑、こうなる↓。

web.xml を、以下の書き換え

<!-- <url-pattern>/_ah/mail/inlet@【プロジェクトID】.appspotmail.com</url-pattern> -->
<url-pattern>/_ah/mail/inlet@【テスト用プロジェクトID】.appspotmail.com</url-pattern>


文字コードの設定:
Preferences > General > Workspace > Text file encoding > UTF-8



Run > Run As > Web Application
で、ローカルの開発環境で実行する。(この操作が記憶され、次回から、Run > Run や、Ctrl+F11 で一発実行可能となる。)
⇒画面下方に"Console"タブに赤字のログのような表示がなされ、内部のWebサーバーが実行したことが分かる。そこに、 http://localhost:8888/ と書かれ、アクセスURLが示されている。

※ この仕事で作ったアプリケーションは、長時間かかるCSV出力を実行する操作がある。クラウドの実行環境では、完了次第、ダウンロード用のURLがメール送信されるが、今回の開発環境ではメールが送信できないようだ。その代り、このログにURLが表示される(ただし、確か、httpsをhttpに書換えないと動作しなかったはず)。なお、今この機能は、クラウド実行環境ではエラーとなる。ライブラリが2,3年前に古くなって動作しなくなっている。

        • -

※ なお、そもそも、いろいろエラーが出て動かん。実行前から、Eclipse画面下方の Problems タブに多数エラーが表示される。

例えば:
The App Engine SDK JAR appengine-api-1.0-sdk-1.9.34.jar is missing in the WEB-INF/lib directory
⇒1.6.4が/lib/にまだあり、1.9.34が無い。
検索すると /.settings/com.google.appengine.eclipse.core.prefs というファイルに、
filesCopiedToWebInfLib=appengine-api-1.0-sdk-1.6.4.jar|appengine-api-labs-1.6.4.jar|appengine-jsr107cache-1.6.4.jar|jsr107cache-1.1.jar|datanucleus-appengine-1.0.10.final.jar|datanucleus-core-1.1.5.jar|datanucleus-jpa-1.1.5.jar|geronimo-jpa_3.0_spec-1.1.1.jar|geronimo-jta_1.1_spec-1.1.1.jar|jdo2-api-2.3-eb.jar
とある。
filesCopiedToWebInfLib=appengine-api-1.0-sdk-1.9.34.jar|appengine-api-labs-1.9.34.jar|appengine-jsr107cache-1.9.34.jar|jsr107cache-1.1.jar|datanucleus-appengine-1.0.10.final.jar|datanucleus-core-1.1.5.jar|datanucleus-jpa-1.1.5.jar|geronimo-jpa_3.0_spec-1.1.1.jar|geronimo-jta_1.1_spec-1.1.1.jar|jdo2-api-2.3-eb.jar
に書換え。

\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\user\ から、
削除した.jarファイルの代替を移動したよ:
appengine-api-1.0-sdk-1.9.34.jar
appengine-api-labs-1.9.34.jar
appengine-jsr107cache-1.9.34.jar

なんか、Problemsタブに、
 The App Engine SDK JAR appengine-api-labs.jar is missing in the WEB-INF/lib directory
みたいのがまだ出てたから、その行を右クリックして、Quick Fix で、インポートするような選択肢を選んだら、プロジェクト内の/lib/の
 appengine-api-labs-1.6.4.jar
が、
 appengine-api-labs.jar
にリネームされたような感じになって、libのエラーの残り数個も一気に消えた。


まだ、以下のエラーが残る。
 Your project must be configured to use a JDK in order to use JSPs unknown Google App Engine Problem
⇒また、右クリック、Quick Fix で、
Select a JDK-based 'JRE System Library' for your project
Java Build Path ウィンドウ ⇒取敢えず3つ全てチェックしてみたが、あまり意味なかったよう。

Your project must be configured to use a JDK in order to use JSPs
「To solve it, change your Eclipse’s Installed JRE, and point it to your JDK folder. In Eclipse menu, select Windows -> Preferences -> Java -> Installed JREs, add your JDK folder and checked on it.」


さて、http://localhost:8888/ で動くようになったが、

まだ http://localhost:8888/logon/regtest_rcvdmail のページで残っているエラーを消すことに。(実際は、GAEクラウドへのDeployに少し先に挑戦して、完了せずまたここに戻った。)

HTTP ERROR 500
Problem accessing /logon/regtest_rcvdmail. Reason:
Unresolved compilation problems:
The import org.apache.commons cannot be resolved

⇒この最後のエラーを消しにかかる。↓↓
GAEjでバイナリファイルをデータストアにアップロード(&ライブラリ導入で躓いた) - 俺の備忘録! (my mind map?)

⇒で、結局、Eclipse 3.7 Indigo へのライブラリ追加は以下の通り。
[1] Window > Preferences > Java > Build Path > User Libraries > Add JARs  (&? ...Build Path > Classpath Variables > New ??)
[2] プロジェクトを選択 > 右クリック > Build Path > Add Libraries
[3] プロジェクト > war > WEB-INF > lib ここへライブラリjarファイルコピー(ドラッグ&ドロップ)

  FileUpload – Appache CommonsからDLした元ファイルは、
   C:\Program Files\Java\
  の下に配置。↓
    commons-fileupload-1.2.2\
  ここは、↓のようなものが置かれたフォルダ。
    jdk1.7.0_80\
    jre7\

これ(↑)より少しシンプルなやり方のURL:
Java Eclipseでライブラリを使って開発効率向上 | ITのおもちゃ箱
俺がしたやり方では、まずEclipse全体のPreferenceで設定してから、プロジェクトに設定したが、
このURLでは、プロジェクトだけに追加。.jarのみプロジェクトに配置し、いろいろ含まれているDLした元ファイルには言及がない。

      • -

GAEにデプロイ挑戦:
⇒エラー:Unable to update app: Cannot get the System Java Compiler. Please use a JDK, not a JRE.」
(GAE-deploy-error_use-JDK-notJRE.png

eclipse - Google App Engine JSP can't deploy: java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE - Stack Overflow

(deploy対策JRE>JDK:1)JAVA_HOME や、Path (環境変数。system32?より前に。)
Java環境構築(Windows版) パスの設定 _ Java, Androidの環境構築、AWS関連の技術情報ポータル _ Tech Fun.cc
コマンドでの確認方法(↑にない内容)
 java -version
 javac -version
 set JAVA_HOME
(※cmdだとうまく行くが、PowerShellだと一部うまく行かない。)
(deploy対策JRE>JDK:2)eclipse.ini に、-vm オプション(-vmargsより前に。)
⇒これで少し進んだ?

ただ、まだエラー。
『GAE-deploy-error_NullPointException-対策忘れた-時間少し置いただけでできた気がする.png
いや、後回しにして、最後のエラー消しに行ったんだっけ?

⇒少し進んだけど、また同じエラーになったっけ?:
『GAE-deploy-error-3_少し進んだけどまたエラー?』

(deploy対策JRE>JDK:3)Preferences > Java > Installed JREs > Execution Environment

(⇒いや、これ、本当にdeploy対策だったっけ?)