我已将源1.8的.jar文件作为静态文件,以便客户端通过JWS启动。但是,当我尝试更新我的应用程序时,收到以下错误:
无法更新应用:类文件是Java 8,但最大支持是Java 7:path-to-my-jar
这似乎表明gae正在将jar中的类识别为servlet,这些只能用Java 7编写,但它们并不是我不打算将它们作为servlet运行。< / p>
我的appengine-web.xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>projectid</application>
<version>0.1</version>
<threadsafe>true</threadsafe>
<static-files>
<include path="/**.jnlp"/>
<include path="/**.jar"/>
</static-files>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
我该如何解决这个问题?
答案 0 :(得分:2)
查看source code here,无法关闭Java版本的检查 - 即使您只想提供JAR文件而不执行它。我相信这个检查是在App Engine SDK 1.9.25版本中引入的。我又回到了App Engine SDK 1.9.24并且能够再次部署。
答案 1 :(得分:1)
我不能帮助你,因为我发现错误几乎和你一样。关于“类文件是Java 8但最大支持是Java 7”
如果我使用Eclipse来部署我的app引擎项目,我就设置了 项目的属性。
它解决了我的问题。 希望能帮到你。
答案 2 :(得分:1)
您必须将eclipse.ini文件中的-vm参数更改为JRE7的bin文件夹,并将1.7作为java编译器检查,其中引用了: https://developers.google.com/eclipse/docs/jdk_compliance
答案 3 :(得分:0)
Static files and resource files文档中的这一部分建议GAE有一些默认逻辑来处理双模式文件,这可能与您所看到的行为有关:
默认情况下,WAR中的所有文件都被视为静态文件和 资源文件,JSP文件除外,它们被编译成servlet 类和映射到URL路径,以及WEB-INF /目录中的文件, 它们从未作为静态文件提供,并且始终可供应用程序使用 作为资源文件。
您的appengine-web.xml
有一个static-files
部分,但没有resource-files
部分,可以使所有文件(包括您的.jar
文件)得到处理作为资源,因此受到GAE的版本检查。
根据此假设,我尝试添加resource-files
部分,最终为该.jar
文件添加明确的排除规则。
我主要在猜测,... ...