Java 调试ant UnsupportedClassVersionError

Java 调试ant UnsupportedClassVersionError,java,exception,ant,jboss,Java,Exception,Ant,Jboss,运行ant软件包后,我得到了以下异常跟踪,该软件包应该创建一个JBoss.ear软件包: 操作系统版本: $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 6.0.2 (squeeze) Release: 6.0.2 Codename: squeeze JBoss安装到/opt/JBoss-4.2.3.GA 有指针吗?根据Java

运行ant软件包后,我得到了以下异常跟踪,该软件包应该创建一个JBoss.ear软件包:

操作系统版本:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.2 (squeeze)
Release:    6.0.2
Codename:   squeeze
JBoss安装到/opt/JBoss-4.2.3.GA

有指针吗?

根据Javadocs for java.lang.UnsupportedClassVersionError,此类的要点是:

当Java虚拟机 尝试读取类文件并 确定主修和辅修 文件中的版本号不正确 支持

这告诉我,有一个类的版本不受支持,通常将其解读为比Ant目前使用的版本更高的版本

所以……话虽如此,看到Ant脚本看起来像是在尝试使用EJB存根生成之类的东西,我想知道您正在尝试使用哪个版本的JavaEE,以及您正在使用哪个版本的JBoss。找出like EE 6不是JavaSE5,以及JRE JBoss在使用什么。如果您使用的JAR包级别高于1.5 build 22,即使是1.5 build 23,那么您可能会遇到此错误。确保所有JAR(甚至第三方JAR和库)以及用于生成JavaEE应用程序的非JAR均为1.5Build22或更低版本。这将有助于缓解问题。如果您不确定jar的版本,您可以使用Winzip打开它并查看其MANAFEST.MF文件。

问题是ant是从Debian repo安装的,而其余java包:如jdk、jre、jboss等,则来自其他供应商Sun/Oracle、Apache等


我已经删除了Debian附带的ant,并用Apache的最新二进制文件替换了它。这解决了我的问题。

我也面临同样的问题。 我在ant脚本中找到了解决方法。 在编译类的ant脚本中,我指定了build.target参数。 例如:

$ ant -version
Apache Ant version 1.8.0 compiled on March 11 2010

$ java -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)

$ javac -version
javac 1.5.0_22
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.2 (squeeze)
Release:    6.0.2
Codename:   squeeze
<target name="compile"><javac compiler="javac1.5" target="1.5" ....></target>