JSP在应用程序引擎上用Java 8编译?

时间:2015-01-29 10:39:18

标签: java google-app-engine

我正在尝试使用推送在应用引擎上部署功能。 Jenkins构建作业成功在app引擎上部署了was文件。

但是当我访问appspot.com上的jsp时,我收到以下错误:

java.lang.UnsupportedClassVersionError: org/apache/jsp/guestbook_jsp : Unsupported major.minor version 52.0

要部署的jenkins命令:

gcloud --project=<project-id> preview app deploy target/guestbook-1.0-SNAPSHOT

我猜这些错误表明JSP是用Java 8编译的,但JRE是Java 7.

有谁能告诉我这里哪里出错?

我正在使用Java Maven项目。

4 个答案:

答案 0 :(得分:1)

我有同样的问题。通过单独安装jdk 7可以避免这种情况,但不是这样。我更愿意找到合适的解决方案。

在maven org.apache.maven.plugins插件中将源和目标设置为1.7并不能解决问题。我的源代码编译为1.7,但JSP代码编译为1.8。

必须有更好的方法。

答案 1 :(得分:0)

它未在App Engine上编译为标题,但在您的计算机上。您正在使用Java 8编译源代码,这就是您看到Unsupported major.minor version 52.0异常消息的原因。

使用Java 7编译代码。您可以检查您拥有哪种Java,例如对于Linux:

java -version

您可以尝试将JAVA_HOME环境变量设置为Java 7主目录,然后打开新终端或重新登录。

答案 2 :(得分:0)

您需要将Java compiler plugin设置为Java版本1.7:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
    </configuration>
  </plugin>

答案 3 :(得分:0)

我在推送部署方面遇到了同样的问题。当您登录到实例并执行java -version时,您会看到它是Java7,但这不是用于使用jenkins构建项目的docker image cloud-dev-java所使用的java。如果为shell添加构建步骤并执行java -version,您将看到此图像使用openjdk-8。

我通过在docker镜像中手动安装Java7来解决这个问题。以下是我详细解决这个问题的方法:

  • 从云控制台
  • 通过SSH登录云实例(bitnami-jenkins)
  • 检查正在运行的docker实例的名称

    mpoehler_gmail_com @ bitnami-jenkins:〜$ sudo docker ps 集装箱ID图像命令创建状态端口名称 548bc88db321 container.cloud.google.com/_b_dev_containers/cloud-dev-go:prod&#34; / bin / bash / google / s 27小时前up 27 hours condescending_kowalevski
    d9fe6779f5d9 container.cloud.google.com/_b_dev_containers/cloud-dev-php:prod&#34; / bin / bash / google / s 27小时前up 27 hours hungry_turing
    aedb0573a460 container.cloud.google.com/_b_dev_containers/cloud-dev-java:prod&#34; / bin / bash / google / s 27小时前up 27 hours mad_kowalevski
    bef5657ea109 container.cloud.google.com/_b_dev_containers/cloud-dev-python:prod&#34; / bin / bash / google / s 27小时前上传27小时reverent_bohr

  • 我们正在寻找名为 mad_kowalevski

  • cloud-dev-java 容器
  • 现在在该容器中安装java 7:

    sudo docker exec mad_kowalevski sudo apt-get update

    sudo docker exec mad_kowalevski sudo apt-get -y install openjdk-7-jdk

  • 之后运行java -version以查看它是否按预期工作

    sudo docker exec mad_kowalevski java -version

    • 应该导致

    java version&#34; 1.7.0_79&#34; OpenJDK运行时环境(IcedTea 2.5.5)(7u79-2.5.5-1~deb8u1) OpenJDK 64位服务器VM(内置24.79-b02,混合模式)

之后构建将按预期工作。