不支持的major.minor版本49.0

每当我登录我的应用程序时,我都会收到以下exception…

javax.servlet.ServletException:com / sun / org / apache / xalan / internal / xsltc / trax / TransformerFactoryImpl(不支持的major.minor版本49.0)

这是什么意思,我该如何解决这个问题?

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

如此处所述 ,您有一个1.5版本的类,您尝试在早期的JVM上运行。

编辑:WAS 5.1使用JDK 1.4, 它会出现 。

您的代码是使用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字节码

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

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

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

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

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

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