2014-01-13 49 views
3

我做了我的閱讀前發佈
我知道這個問題上有很多問題。
我已經閱讀了所有那些我能找到但沒有提到的問題和建議。「無法更新應用程序:無法編譯生成的JSP Java文件。」當試圖deply GAE應用

我的環境
64位Windows 7 GAE SDK 1.8.8 的JDK 日食開普勒4.3.1 +谷歌插件1.7.0_45版。

東西,我試過已經
以下是我已經嘗試過的事情:
1)改變系統變量JAVA_HOME指向C:\ Program Files文件\的Java \ jdk1.7.0_45
2)確保了系統變量PATH包含C:\ Program Files文件\的Java \ jdk1.7.0_45 \ BIN
3)打開命令窗口,並同時運行Java的版本和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)我打開標記窗格(日食:窗口 - 顯示視圖 - 其他...一般 - 標記),並修復了所提到的所有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 

的 「臨時目錄」 似乎O.K. (但也許有缺失的庫呢?!) 和日誌文件包含以下內容:

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.admin.Application.createStagingDirectory(Application.java:615) at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418) at 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) at 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(以及什麼參數),以便我可以看到它的輸出(假設插件隱藏了一些東西...)。

感謝

+0

你能告訴我們你是否在你的Eclipse中使用了JDK而不是JRE。轉到首選項 - > Java - > JRE,並確保您指向的是JDK而不是JRE。 – Romin

+1

對於命令行,請嘗試以下操作以上傳應用程序:appengine-java-sdk \ bin \ appcfg.cmd update Romin

回答

2

問題解決

這裏是我做過什麼來解決這個問題,希望這將幫助其他人有類似的問題。

我決定嘗試從命令行運行上載,而不是使用它的插件。 這裏是我得到的:
[請注意,我已將rem添加到@echo off命令中,並且還從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: [email protected] 
Password for [email protected]: 
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的輸出中顯示最重要的行,但對我來說,它感覺就像某種錯誤。

兩行總結
在命令窗口中運行<path-to-appengine-java-sdk>\bin\appcfg.cmd update <war-location>, 它會爲您提供更詳細的輸出,則插件不和將最有可能使您能夠解決幾分鐘之內的問題。

如果失敗了,歡迎您按照我在問題主體中提到的所有步驟行事,嘿好像在過去幫助過其他人。

+0

從命令行運行它顯示確切的錯誤。非常感謝! – DFB