不支持的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并设置您可能想要使用的版本。
- 带有返回值的存储过程
- Handler.handleMessage未在测试中调用,但在应用程序中调用
- android JDBC mysql java连接器app:preDexDebug
- 任何人都可以通过ConcurrentModificationException解释我吗?
- 动作栏搜索小写不适用于addMarker上的代码段
- Java检查是否按下了控制键
- 错误:java.lang.ClassNotFoundException:更新android studio 3.0.0时找不到类org.openjdk.jdi.ReferenceType
- Android studio:无法从清单中读取packageName
- 如何检索按钮上的数据并移动到下一步按钮?