GlassFish服务器中的java.lang.UnsupportedClassVersionError?
我正在尝试将WAR文件部署到GlassFish服务器。我得到以下错误: [#| 2013-04-06T17:50:56.982-0430 |警告| glassfish3.1.2 | javax.enterprise.system.container.web.org.glassfish.web.loader | u ThreadID=17;| u ThreadName=Thread-2;| WEB9052:无法加载类com.tugay.User,原因:java.lang.unsupportdclassversioner:WEB9032:class com.tugay.User有不受支持的主要或次要版本号,大于tJava运行时环境版本1.6.0_37 |#] 为什么它抱怨我的Java版本?我在类上有一个名为的GlassFish服务器中的java.lang.UnsupportedClassVersionError?,java,glassfish,Java,Glassfish,我正在尝试将WAR文件部署到GlassFish服务器。我得到以下错误: [#| 2013-04-06T17:50:56.982-0430 |警告| glassfish3.1.2 | javax.enterprise.system.container.web.org.glassfish.web.loader | u ThreadID=17;| u ThreadName=Thread-2;| WEB9052:无法加载类com.tugay.User,原因:java.lang.unsupportdcla
@注释。Java 1.6.0\u 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 7或更高版本编译了com.tugay.User
源文件,并尝试在Java 6上运行它。Java 7更改了.class
格式,以便在非静态类型语言上获得更好的性能。有关更多信息,请参阅
你可以试着
- 将生产运行时升级到7
- 使用1.6编译,或
- 使用
-source 1.6-target 1.6
作为构建脚本的修饰符
在中有进一步的解释。您已经使用Java 7或更高版本编译了com.tugay.User
源文件,并尝试在Java 6上运行它。Java 7更改了.class
格式,以便在非静态类型语言上获得更好的性能。有关更多信息,请参阅
你可以试着
- 将生产运行时升级到7
- 使用1.6编译,或
- 使用
-source 1.6-target 1.6
作为构建脚本的修饰符
在中有进一步的解释。仔细查看错误的包名,即java.lang
。因此,问题肯定不在JSF或Glassfish中。它只是在这个包所属的基本java SE中。如果您有特定于JSF的问题,您会得到一个异常javax.faces
包。对不起,wher你看到包名和异常了吗?这里没有异常。这只是意味着当前运行的JVM不支持指定类的版本。如果你用较新版本的JVM编译了该类,可能会发生这种情况,例如Java 1.7。什么是“指定类的版本”意思是?这指的是虚拟机实际加载的类。您的运行时是1.6
,显然您在没有明确指定目标版本的情况下使用了更高的版本1.7
。将代码重新编译为target1.6
。例如,在eclipse中,您可以使用window>settings>java>c进行设置ompiler>compiler compliance level>1.6
仔细查看错误的包名,即java.lang
。因此,问题肯定不在JSF或Glassfish中。这只是该包所属的基本java SE中。如果您遇到特定于JSF的问题,您会得到javax.faces
包的异常。抱歉,您在哪里看到了包名和异常?这里没有异常?这只是意味着当前运行的JVM不支持指定类的版本。如果您使用较新版本的JVM(例如Java 1.7版本)编译该类,则可能会发生这种情况。什么是“指定类的版本”意思是?这指的是虚拟机实际加载的类。您的运行时是1.6
,显然您在没有明确指定目标版本的情况下使用了更高的版本1.7
。将代码重新编译为target1.6
。例如,在eclipse中,您可以使用window>settings>java>c进行设置ompiler>编译器符合性级别>1.6