[英]“Unable to update app: Failed to compile the generated JSP java files.” when trying to deploy GAE App
我在發帖前做了我的閱讀
我知道在這個問題上有很多問題。
我已經閱讀了所有我能找到的但沒有提到的問題和建議。
我的環境
Windows 7 64位GAE SDK 1.8.8版本1.7.0_45的JDK eclipse kepler 4.3.1 + google插件。
我嘗試過的東西
以下是我已經嘗試過的事情:
1)將系統變量JAVA_HOME更改為指向C:\\ Program Files \\ Java \\ jdk1.7.0_45
2)確保系統變量PATH包含C:\\ Program Files \\ Java \\ jdk1.7.0_45 \\ bin
3)當打開命令窗口並運行java -version和javac -version時,我得到:
C:\Users\epeleg>java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
C:\Users\epeleg>javac -version
javac 1.7.0_45
4)檢查所有我的JSP頁面(只有2個)在開發服務器中使用時是否正常工作
5)修改了C:\\Program Files\\GAE\\appengine-java-sdk-1.8.8\\bin\\appcfg.cmd
以便其中的命令以@%JAVA_HOME%\\bin\\java ...
而不是java
開頭。 。
6)我打開了Markers Pane(eclipse:window - show view - other ... General - Markers)並解決了那里提到的所有Java問題,無論它們看起來多么微不足道。
日志顯示的內容部署過程報告:
Preparing to deploy:
Created staging directory at: 'C:\Users\epeleg\AppData\Local\Temp\appcfg1552018719531070310.tmp'
Scanning for jsp files.
Compiling jsp files.
com.google.appengine.tools.admin.JspCompilationException: Failed to compile the generated JSP java files.
ינו 13, 2014 3:20:30 PM org.apache.jasper.JspC processFile
INFO: Built File: \myFirstJSP.jsp
ינו 13, 2014 3:20:30 PM org.apache.jasper.JspC processFile
INFO: Built File: \mySecondJSP.jsp
Debugging information may be found in C:\Users\epeleg\AppData\Local\Temp\appengine-deploy4888568219008828635.log
“暫存目錄”似乎沒問題(但可能還有缺少的庫?!),日志文件包含以下文本:
Unable to update:
com.google.appengine.tools.admin.JspCompilationException:無法編譯生成的JSP java文件。 com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:840)com.google.appengine.tools.admin.Application.compileJsps(Application.java:801)com.google.appengine.tools上的com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:840) .admin.Application.createStagingDirectory(Application.java:615)位於com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418)com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl) .java:55)com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:433)com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:158) )org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
我的問題
1)尋找關於我還能嘗試什么的想法
2)有沒有辦法直接在登台文件夾中從命令窗口模擬編譯,以便我可能希望看到實際有用的錯誤消息?
3)錯誤說Failed to compile the generated JSP java files
- 那些生成的文件應該在哪里?
4)有沒有辦法直接從命令行運行appcfg.cmd(以及使用什么參數),這樣我就可以看到它的輸出(假設插件隱藏了一些東西......)。
問題解決了
以下是我為解決此問題所做的工作,希望它能幫助其他有類似問題的人。
我決定嘗試從命令行運行上傳,而不是使用它的插件。 這就是我得到的:
[注意我在@echo off命令中添加了rem,並在appcfg.cmd中從java命令的開頭刪除了@,以便所有命令都回顯到控制台]
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>appcfg.cmd update "X:\path\to\my\project\war"
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem @echo off
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Launches the AppCfg utility, which allows Google App Engine
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem developers to deploy their application to the cloud.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>C:\Program Files\Java\jdk1.7.0_45\bin\java -Djava.home="C:\Program Files\Java\jdk1.7.0_45\jre" -Xmx1100m -cp "C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin\\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:\path\to\my\project\war"
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
好的,所以我再次編輯了appcfg.cmd並將其最后一行更改為如下所示:
"%JAVA_HOME%\bin\java" -Djava.home="%JAVA_HOME%\jre" -Xmx1100m -cp "%~dp0\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg %*
再試一次:
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>appcfg.cmd update "X:\path\to\my\project\war"
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem @echo off
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Launches the AppCfg utility, which allows Google App Engine
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem developers to deploy their application to the cloud.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>"C:\Program Files\Java\jdk1.7.0_45\bin\java" -Djava.home="C:\Program Files\Java\jdk1.7.0_45\jre" -Xmx1100m -cp "C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin\\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:\path\to\my\project\war"
Θ≡σ 13, 2014 5:17:12 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Reading application configuration data...
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF/appengine-web.xml
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF/web.xml
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.IndexesXmlReader readConfigXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF\appengine-generated\datastore-indexes-auto.xml
Beginning interaction for module default...
Email: myemail@mydomain.com
Password for myemail@mydomain.com:
0% Created staging directory at: 'C:\Users\epeleg\AppData\Local\Temp\appcfg8197335956386755707.tmp'
5% Scanning for jsp files.
8% Compiling jsp files.
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\myFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\mySecondJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\myFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\mySecondJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
2 errors
Error Details:
Θ≡σ 13, 2014 5:17:48 PM org.apache.jasper.JspC processFile
INFO: Built File: \myFirstJSP.jsp
Θ≡σ 13, 2014 5:17:48 PM org.apache.jasper.JspC processFile
INFO: Built File: \mySecondJSP.jsp
com.google.appengine.tools.admin.JspCompilationException: Failed to compile the generated JSP java files.
Unable to update app: Failed to compile the generated JSP java files.
Please see the logs [C:\Users\epeleg\AppData\Local\Temp\appcfg6545644664045561868.log] for further information.
所以我去了我的JSP,從頁面標簽中刪除了有問題的導入屬性,再次嘗試,這次它起作用了。
現在,我不知道為什么插件無法顯示appcfg.cmd輸出中最重要的行,但對我來說這感覺就像某種bug。
兩行摘要
在命令窗口中運行<path-to-appengine-java-sdk>\\bin\\appcfg.cmd update <war-location>
,它會為您提供一個更詳細的輸出然后插件,並且很可能讓您解決問題只需幾分鍾。
如果失敗了,歡迎你按照我在問題機構中提到的所有步驟,嘿似乎過去曾經幫助過其他人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.