【问题标题】:java.lang.UnsupportedClassVersionError in GlassFish server?GlassFish 服务器中的 java.lang.UnsupportedClassVersionError?
【发布时间】:2013-04-07 07:15:00
【问题描述】:

我正在尝试将 WAR 文件部署到 GlassFish 服务器。我收到以下错误:

[#|2013-04-06T17:50:56.982-0430|警告|glassfish3.1.2|javax.enterprise.system.container.web.org.glassfish.web.loader|_ThreadID=17;_ThreadName=Thread- 2;|WEB9052: Unable to load class com.tugay.User, reason: java.lang.UnsupportedClassVersionError: WEB9032: Class com.tugay.User has unsupported major or minor version numbers, which are greater than those found in Java Runtime Environment版本 1.6.0_37|#]

为什么它抱怨我的 Java 版本?我在课堂上有一个@Named 注释。 Java 1.6.0_37 不支持这个注解吗?

package com.tugay.user;

import javax.faces.bean.SessionScoped;
import javax.inject.Named;
import java.io.Serializable;


@Named("userBean")
@SessionScoped
public class UserBean implements Serializable {

    private String userName;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

【问题讨论】:

  • 仔细看错误的包名,就是java.lang。因此,问题绝对不在 JSF 或 Glassfish 中。它只是在这个包所属的基本 Java SE 中。如果您遇到特定于 JSF 的问题,您将获得 javax.faces 包的异常。
  • 对不起,你在哪里看到包名和异常?这里也不例外?
  • java.lang.UnsupportedClassVersionError。它只是表示当前运行的 JVM 不支持指定类的版本。如果您使用较新版本的 JVM 编译了该类,则可能会发生这种情况,例如Java 1.7 之一。
  • “指定类的版本”是什么意思?
  • 这是指虚拟机正在加载的类女巫。您的运行时是1.6,显然您已经编译了更高版本的1.7,而没有明确指定目标版本。重新编译代码以定位1.6。例如,在 Eclipse 中,您可以使用 window > settings > java > compiler > compiler compliance level > 1.6 进行设置

标签: java glassfish


【解决方案1】:

您已经使用 Java 7 或更新版本编译了 com.tugay.User 源文件,并尝试在 java 6 上运行它。.class 格式中的 Java 7 进行了更改,以允许在非静态下获得更好的性能-类型的语言。请参阅the official oracle documentation 了解更多信息。

你可以试试

  • 将生产运行时升级到 7,
  • 使用 1.6 编译,或
  • 使用-source 1.6 -target 1.6 作为构建脚本的修饰符

another question中有进一步的解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多