2018/02/23

[Java 8] JSPファイルをGoogle App Engineにデプロイできない

Google App Engine (GAE) にJava Server Pages (JSP)ファイル込みのコードをデプロイ(アップロード)しようとすると、エラーが出て失敗するためその対処法メモ。

表示されるエラー

Deploying to App Engine に問題が発生しました。
Process exited with error code 1


エラーログ

At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.



スタックトレース

Unable to stage:
java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.
    at com.google.appengine.tools.admin.Application.compileJspJavaFiles(Application.java:1287)
    at com.google.appengine.tools.admin.Application.compileJsps(Application.java:1264)
    at com.google.appengine.tools.admin.Application.populateStagingDirectory(Application.java:975)
    at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:872)
    at com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:539)
    at com.google.appengine.tools.admin.AppAdminImpl.stageApplicationWithDefaultResourceLimits(AppAdminImpl.java:492)
    at com.google.appengine.tools.admin.AppCfg$StagingAction.execute(AppCfg.java:2530)
    at com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:391)
    at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:214)
    at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:120)
    at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:116)
com.google.appengine.tools.admin.AdminException: Unable to stage app: Cannot get the System Java Compiler. Please use a JDK, not a JRE.
    at com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:543)
    at com.google.appengine.tools.admin.AppAdminImpl.stageApplicationWithDefaultResourceLimits(AppAdminImpl.java:492)
    at com.google.appengine.tools.admin.AppCfg$StagingAction.execute(AppCfg.java:2530)
    at com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:391)
    at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:214)
    at com.google.appengine.tools.admin.AppCfg.(AppCfg.java:120)
    at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:116)
Caused by: java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.
    at com.google.appengine.tools.admin.Application.compileJspJavaFiles(Application.java:1287)
    at com.google.appengine.tools.admin.Application.compileJsps(Application.java:1264)
    at com.google.appengine.tools.admin.Application.populateStagingDirectory(Application.java:975)
    at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:872)
    at com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:539)
    ... 6 more

環境

  • Google App Engine (Java8 Servlet)
  • Eclipse Oxygen.2 (4.7.2) 日本語
  • Cloud Tools for Eclipse (1.5.1.201801292341)
  • Google Cloud SDK 186.0.0
    • app-engine-java 1.9.60

1.要旨

必要な処理は以下の通り
  • プロジェクトのビルドパスで Java 1.8 JRE ではなく Java 1.8 JDK を読み込ませること

2.JREからJDKへ変更

  • AppEngineのプロジェクトを右クリックでプロパティを開く
  • Javaのビルド・パス -> ライブラリー -> 「JRE システム・ライブラリー [JavaSE-1.8]」 を選択-> 編集ボタンをクリック



  • 実行環境のライブラリーがJDKなら問題なしOKです、下記画像のようにJREだとダメ
  • 代替 JRE を選択 -> インストール済みの JRE ボタンをクリック


  • 追加 ボタンをクリック


  • 標準 VM を選択 -> 次へ をクリック


  • ディレクトリー をクリック


  • Program Files\Java の中にある jdk1.8.0_(バージョン)を選択して OK ボタンをクリック
    • ※必ずjdkから始まっているフォルダを選択すること


  • 正しいフォルダを選択した場合、下記図のようにシステムライブラリーの一覧が表示される
  • 完了 ボタンをクリック



  • 完了 をクリックしてウィンドウを閉じると以下のように、「JRE システム・ライブラリー」がjdkのライブラリから読み込みようになる。
  • 適用して閉じる をクリック



3.おまけ

この問題について検索しているとeclipse.iniに下記のようなjdkのbinディレクトリまでのパスを記入すると治る。と書かれているサイトがあるが筆者の環境では記入しなくても問題は解消した。
-vm
C:/Program Files/Java/jdk1.8.0_152/bin




Google App Engine JSP Files

0 件のコメント:

コメントを投稿