在jar中为JWS提供java 1.8源代码作为静态文件

时间:2015-10-17 02:54:19

标签: java google-app-engine

我已将源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>

我该如何解决这个问题?

4 个答案:

答案 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引擎项目,我就设置了   项目的属性。

  1. Java编译器:设置为1.7版本。
  2. 项目方面:也设置为1.7。
  3. 它解决了我的问题。 希望能帮到你。

答案 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文件添加明确的排除规则。

我主要在猜测,... ...