2013-04-06 84 views
0

我正在尝试将WAR文件部署到GlassFish服务器。我收到以下错误:GlassFish服务器中的java.lang.UnsupportedClassVersionError?

[#|2013-04-06T17:50:56.982-0430|WARNING|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 the Java Runtime Environment version 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; 
    } 
} 
+0

仔细看看错误的包名称,即'java.lang'。因此,这个问题绝对不在JSF或Glassfish中。它只是在这个软件包所属的基本Java SE中。如果你有JSF特定的问题,你会得到一个'javax.faces'包的异常。 – BalusC 2013-04-06 22:49:17

+0

对不起,您在哪里看到包名和例外情况?这里没有例外吗? – 2013-04-06 22:51:00

+0

['java.lang.UnsupportedClassVersionError'](http://docs.oracle.com/javase/7/docs/api/java/lang/UnsupportedClassVersionError.html)。这仅表示当前运行的JVM不支持指定类的版本。如果您已经使用较新版本的JVM编译了该类,可能会发生这种情况,例如Java 1.7的一个。 – BalusC 2013-04-06 22:55:37

回答

5

你编译使用Java 7的com.tugay.User源文件或更新的版本,并尝试基于Java 6运行它有一个在.class格式的Java 7的变化,允许在非statically-更好的性能键入语言。有关更多信息,请参阅the official oracle documentation

你可以尝试

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

有进一步在another question的解释。