Google App Engine-未能编译生成的JSP java文件

Google App Engine-未能编译生成的JSP java文件,java,google-app-engine,Java,Google App Engine,我的项目在本地运行良好,但在尝试将其部署到GAE服务器时,我收到以下错误消息: Unable to update app: Failed to compile the generated JSP java files. 这主要发生在我从Java7切换到Java6时,因为GAE显然还不支持这一点。我正在使用GAE 1.7.4,这是一个已知的问题吗?这个项目出了什么问题?它是JSP中的语法吗?在我开始使用GAE 1.7.4之前,他们曾经进行过编译,但我不知道这是什么时候开始的。我也遇到过同样的问题

我的项目在本地运行良好,但在尝试将其部署到GAE服务器时,我收到以下错误消息:

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

这主要发生在我从Java7切换到Java6时,因为GAE显然还不支持这一点。我正在使用GAE 1.7.4,这是一个已知的问题吗?这个项目出了什么问题?它是JSP中的语法吗?在我开始使用GAE 1.7.4之前,他们曾经进行过编译,但我不知道这是什么时候开始的。我也遇到过同样的问题,并且确信存在GAE问题。但是,现在我意识到我已经更改了一个由几个.jsp文件引用的.java文件的名称,而在.jsp中文件名没有更改。在我修复了.jsp中的文件名之后,部署再次正常工作。啊


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

我也遇到了同样的问题。是的,您在Eclipse和日志中遇到的错误确实没有帮助,但希望与大家分享,部署到本地dev服务器反而给出了一条非常有用的错误消息,例如,在我的例子中:


HTTP错误500

访问/时出现问题。原因:

无法为JSP编译类:

jsp文件:/dashboard.jsp的第286行出现错误

重复的局部变量数据存储

283:   </head>
284:   <body onload="initialize()">
285:     <%
286:     DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
287: 
288:     UserService userService = UserServiceFactory.getUserService();
289:     User user = userService.getCurrentUser();
283:
284:   

285:如果使用JSP包含,则必须确保包含在其他文件中的JSP文件具有所有正确的导入,即使在测试环境中一切似乎都正常工作

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

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

然后在
inc.jsp
中,您必须确保所有正确的导入都在那里,即使编译器没有明确对此进行抱怨

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


这是我发现问题中提到的错误的原因之一。

我也有同样的问题。我已经更改了一个方法的方法签名,该方法由一个我通常不去的JSP调用。因此,在本地运行时,一切都很好,因为我从未使用有问题的JSP

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


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

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

这是我的博客,了解详情。

只要确保所有jsp文件都在本地运行,您就可以 尝试在本地计算机上运行和/或测试所有jsp文件。它们在任何jsp文件中都必须是错误的

我就这样解决了这个问题


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

nurinamu的答案是可以的,但对我来说不起作用,因为我的项目太复杂,我无法解决链接appengine暂存区域中生成的源文件夹时出现的错误。但我还是设法解决了我的问题

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

这真的是我找出问题原因的唯一方法

更新


对我来说,这个错误是一个不受appengine支持的恶意导入

看看答案是否有用,可能重复。上面的链接告诉您使用JDK,而不是JRE。然而,我和原来的海报有同样的问题,我肯定在使用JDK。在错误消息之后,有几行代码告诉我JSP已经生成:
1-feb-2013 17:24:55 org.apache.jasper.JspC processFile INFO:builded File:\session.JSP
没有显示其他消息。最后,GAE告诉我查看日志文件,其中只有一个
com.google.appengine.tools.admin.JspCompilationException
,但没有有用的信息。这个问题有一个(最近的)解决方案。所以它是一个1.7.4问题?像enver一样,我使用的是JDK,而不是JRE。我不确定问题是否针对1.7.4。这可能是谷歌方面出现的问题。但是由于我很少看到关于这个问题的引用,我怀疑这是我和你的代码中的一个问题。我们只是碰巧在同一时间遇到它,结果就是,我的一位同事在JSP中搞砸了一些声明。谢谢你的帮助!这可能也是我的问题。我清理了一堆未使用的jsp文件,现在像往常一样部署工作。如果eclipse插件给出了一条明确的错误消息,这仍然会很有帮助。对我来说,我也调用了jsp中的一些变量,但我一开始没有声明这些变量。我不清楚“部署到本地开发服务器”是什么意思。我可以毫无问题地在本地运行我的应用程序。你能在这上面再扩展一点吗?当我清除一些旧的未使用的jsp文件时,应用程序的问题消失了。它们可能包含对不再存在的东西的引用。我不知道为什么上面的答案标记为co