不支持的major.minor版本49.0

时间:2009-10-06 14:31:30

标签: java

每当我登录我的应用程序时,我都会收到以下异常...

  

javax.servlet.ServletException:   COM /阳光/组织/阿帕奇/ xalan的/内部/ XSLTC / TRAX / TransformerFactoryImpl   (不支持的major.minor版本49.0)

这意味着什么?如何解决问题?

6 个答案:

答案 0 :(得分:14)

您用于运行.class的JVM与用于编译.class的Java版本不匹配。运行它的JVM是用于编译该类的JVM的早期版本。

如详细here所示,您有一个1.5版本的类,您尝试在早期的JVM上运行。

编辑:WAS 5.1使用JDK 1.4,it would appear

答案 1 :(得分:7)

您的代码是使用Java 1.5编译的,并且您尝试使用Java 1.4(或更低版本)

运行它

解决方案是

a) Run it with Java1.5 ( perhaps using WAS 6+ ) 
b) Recompile it with Java 1.4

c) Recompile it with Java.15 but specifying the -target flag ( javac -target 1.4 .... ) 

关键是,你试图在1.4 vm

中运行1.5字节码

答案 2 :(得分:2)

您有一些使用Java 5功能编译的代码,您尝试在1.4或更早版本的JVM上运行。检查您的JAVA_HOME变量是否指向1.5或更高版本的JDK。

更新:在您的评论中,您说您使用的是WAS 5.1。 WAS 5.1不支持Java 5,从内存中你需要在WAS 6.1上使用Java 5(寻找参考...)

答案 3 :(得分:1)

如果您使用更高版本的JDK为JAVA的次要版本构建类,请使用javac编译器的-source和-target开关。一些客户确实需要Java的次要版本,例如1.4,而你正在用1.6开发。 -source和-target是对这个szenario的补救措施。您可以阅读Alex Buckley关于字节代码与源代码版本控制问题的非常好的paper

但是由于TransformerFactoryImpl是一个Sun内部类,请检查您的容器的JAVA_HOME,这是特定于容器的。

答案 4 :(得分:1)

当您在使用与最终运行代码的JDK版本不同的JDK版本的计算机中编译代码时,会发生这种情况。 确保在这些不同的框中使用相同的JDK版本。

答案 5 :(得分:0)

使用sudo update-alternatives --config java并设置您可能想要使用的版本。