尝试部署 GAE 应用时"Unable to update app: Failed to compile the generated JSP java files."



我在发帖前阅读了
我知道这个问题有很多问题
我已经阅读了我能找到的所有内容,但其中的问题和建议都没有帮助。

我的环境
windows 7 64位GAE SDK 1.8.8JDK的1.7.0_45版本eclipse kepler 4.3.1+谷歌插件。

我已经尝试的东西
以下是我已经尝试过的东西:
1)将系统变量JAVA_HOME更改为指向C:\Program Files\JAVA\jdk1.7.0_45
2)确保系统变量PATH包含C:\Program Files\JAVA \jdk1.70_45\bin
3)打开命令窗口并同时运行JAVA版本和javac版本时,我得到:

C:Usersepeleg>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:Usersepeleg>javac -version
javac 1.7.0_45

4) 检查我的所有JSP页面(只有2个)在开发服务器中使用时是否正常工作

5) 修改了C:Program FilesGAEappengine-java-sdk-1.8.8binappcfg.cmd,使其内部的命令以@%JAVA_HOME%binjava ...而不是java开始。。。

6) 我打开了Markers窗格(eclipse:window-show-view-other…General-Markers),并修复了其中提到的所有Java问题,无论这些问题看起来多么微不足道。

日志显示的内容部署过程报告:

Preparing to deploy:
Created staging directory at: 'C:UsersepelegAppDataLocalTempappcfg1552018719531070310.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:UsersepelegAppDataLocalTempappengine-deploy4888568219008828635.log

"暂存目录"似乎还可以(但可能缺少库?!)日志文件包含以下文本:

Unable to update:

com.google.appengine.tools.admin.JspCompilationException:编译生成的JSP java文件失败。网址:com.google.aappengine.tools.admin.Application.comfileJavaFiles(Application.java:840)网址:com.google.aappengine.tools.admin.Application.compaileJsps(Application.java:801)网址:com.google.aappengine.tools.admin.Application.createStagingDirectory(Application.java:615)网址:com.google.aappengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418)网址:com.google.aappengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55)网址:com.google.aappengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgesImpl.java:433)网址:com.google.aappengine.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(以及使用什么参数),这样我就可以看到它的输出(假设插件对我隐藏了一些东西…)。

问题已解决

以下是我为解决这个问题所做的,希望它能帮助其他有类似问题的人。

我决定尝试从命令行运行上传,而不是使用插件。我得到的是:
[注意,我在@cecho-off命令中添加了rem,并在appcfg.cmd中从java命令的开头删除了@,这样所有命令都会回显到控制台]

C:Program FilesGAEappengine-java-sdk-1.8.8bin>appcfg.cmd update "X:pathtomyprojectwar"
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem @echo off
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem Launches the AppCfg utility, which allows Google App Engine
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem developers to deploy their application to the cloud.
C:Program FilesGAEappengine-java-sdk-1.8.8bin>C:Program FilesJavajdk1.7.0_45binjava -Djava.home="C:Program FilesJavajdk1.7.0_45jre" -Xmx1100m -cp "C:Program FilesGAEappengine-java-sdk-1.8.8bin\..libappengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:pathtomyprojectwar"
'C:Program' is not recognized as an internal or external command,
operable program or batch file.

好的,所以我再次编辑了appcfg.cmd,并将其最后一行改为这样:

"%JAVA_HOME%binjava" -Djava.home="%JAVA_HOME%jre" -Xmx1100m -cp "%~dp0..libappengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg %*

重试:

C:Program FilesGAEappengine-java-sdk-1.8.8bin>appcfg.cmd update "X:pathtomyprojectwar"
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem @echo off
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem Launches the AppCfg utility, which allows Google App Engine
C:Program FilesGAEappengine-java-sdk-1.8.8bin>rem developers to deploy their application to the cloud.
C:Program FilesGAEappengine-java-sdk-1.8.8bin>"C:Program FilesJavajdk1.7.0_45binjava" -Djava.home="C:Program FilesJavajdk1.7.0_45jre" -Xmx1100m -cp "C:Program FilesGAEappengine-java-sdk-1.8.8bin\..libappengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:pathtomyprojectwar"
Θ≡σ 13, 2014 5:17:12 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node SoftwareJavaSoftPrefs 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/warWEB-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/warWEB-INF/web.xml
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.IndexesXmlReader readConfigXml
INFO: Successfully processed X:/path/to/my/project/warWEB-INFappengine-generateddatastore-indexes-auto.xml
Beginning interaction for module default...
Email: myemail@mydomain.com
Password for myemail@mydomain.com:
0% Created staging directory at: 'C:UsersepelegAppDataLocalTempappcfg8197335956386755707.tmp'
5% Scanning for jsp files.
8% Compiling jsp files.
C:UsersepelegAppDataLocalTemp1389626267515-0orgapachejspmyFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:UsersepelegAppDataLocalTemp1389626267515-0orgapachejspmySecondJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:UsersepelegAppDataLocalTemp1389626267515-0orgapachejspmyFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:UsersepelegAppDataLocalTemp1389626267515-0orgapachejspmySecondJSP_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:UsersepelegAppDataLocalTempappcfg6545644664045561868.log] for further information.

所以我转到我的JSP,从页面标记中删除了有问题的导入属性,再次尝试,这次成功了。

现在,我不知道为什么插件无法显示appcfg.cmd输出中最重要的行,但对我来说,这感觉像是一个bug。

两行摘要
在命令窗口中运行<path-to-appengine-java-sdk>binappcfg.cmd update <war-location>,它将为您提供比插件更详细的输出,并且很可能使您能够在几分钟内解决问题。

如果失败了,欢迎你遵循我在问题正文中提到的所有步骤,他们过去似乎帮助过其他人。

相关内容

最新更新