Google App Engine – 无法编译生成的JSP java文件

我的项目在本地工作正常,但在尝试将其部署到GAE服务器时,我收到以下错误消息:

Unable to update app: Failed to compile the generated JSP java files. 

这主要发生在我从Java 7切换到Java 6时,因为显然GAE还不支持。 我使用GAE 1.7.4,这是一个已知的问题吗? 这个项目有什么问题? 它是JSP中的语法吗? 他们在我开始使用GAE 1.7.4之前曾经编译过,但我不知道这个开始的确切原因。

我一直有同样的问题,并确信存在GAE问题。 但是,现在我意识到我已经更改了几个.jsp文件引用的.java文件的名称,并且文件名在.jsp中没有更改。 我修复了.jsp部署中的文件名后再次正常工作。 Arrgh。

我认为在GAE开始编译JSP文件之前,有错误的JSP文件会成功部署。 此外,在本地运行时,JSP在访问之前显然不会被编译,因此除非在本地测试所有JSP文件,否则您可能不知道错误。 但是,如果尝试部署,JSP编译将失败并且部署将中止。 不幸的是,没有明智的错误信息表明发现问题的位置。

我尝试再次在eclipse上重新编译java文件并检查错误。
我认为这是检查它的更好方法。

这是我的博客细节。
http://nurinamu.tumblr.com/post/62384368766/how-to-detect-the-jsp-compile-error-when-deploy-to

我有同样的问题。 我已经改变了我通常不会去的JSP调用的方法的方法签名。 所以在本地运行时一切正常,因为我从来没有去过有问题的JSP。

解决此问题的方法是在本地运行并转到项目中的每个JSP。 最终我得到了一个JSP,它在我的浏览器窗口中给了我一个完整的堆栈跟踪。 当我修复该JSP中的错误时,我再次能够部署到应用程序引擎生产。

如果GAE能够报告哪个JSP失败会更好,但这种技术会起作用。

我在同一个问题上运行。 是的,您在Eclipse和日志中获得的错误实际上是无益的,但是想要共享部署到本地开发服务器,而是提供了一个非常有用的错误消息,例如在我的情况下:


HTTP错误500

访问/的问题。 原因:

无法为JSP编译类:

在jsp文件中的第286行:/dashboard.jsp发生错误

重复的本地变量数据存储

 283:  284:  285: <% 286: DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 287: 288: UserService userService = UserServiceFactory.getUserService(); 289: User user = userService.getCurrentUser(); 

救了一大头疼。

nurinamu的答案还可以,但它对我不起作用,因为我的项目太复杂,我无法解决链接在appengine临时区域生成的源文件夹所得到的错误。 但是我确实设法解决了我的问题!

这种方法有点痛苦,但在最坏的情况下: 将JSP移出项目并进行测试部署,直到您缩小范围并找到导致问题的JSP。

这真的是我能找出造成问题的唯一方法。

UPDATE

对我来说,错误是一个流氓导入,而appengine不支持。

如果使用JSP包含,则必须确保包含在其他文件中的JSP文件具有所有正确的导入,即使一切似乎在测试环境中运行良好。

例如,如果您有一个名为inc.jsp的文件,则在其他文件中包含它,如下所示:

 <%@include file="inc.jsp" %> 

然后在inc.jsp里面,你必须确保所有正确的导入都存在,即使编译器没有明确地抱怨它。

在包含JSP中查找错误的简单方法是在运行开发服务器时尝试在浏览器中打开它。 您将看到编译器没有告诉您的JSP错误。

这是我找到问题中提到的错误的一个原因。

只需确保所有jsp文件都在本地运行,因此您可以尝试run and/or test all jsp files on your local 。 它们必须是任何jsp文件中的错误。

我用这种方式解决了这个问题。

我只在一个jsp文件中有错误,但它显示所有jsp文件的相同错误,所以不要担心所有文件。