我在/ root / umar / bin目录中有一个名为umar.jar的jar文件。我在同一目录中有一个shell脚本文件run.sh。以下是run.sh
的内容#!/bin/bash
"$JAVA_HOME"/bin/java -jar /root/umar/bin/umar.jar
现在,当我运行shell脚本时,出现以下错误
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
经过一些谷歌搜索后,我发现(作为提到的stackoverflow的一个人),当使用JDK的后续版本编译Jar而不是JRE时,会发生此类错误。
现在奇怪的是,如果我直接在shell上运行这个命令
java -jar umar.jar
它完美无缺。如果使用JDK的更高版本编译jar而不是我的JRE,那么它甚至不应该从shell运行。
你有什么建议?
答案 0 :(得分:4)
比较“java -version”和“”$ JAVA_HOME“/ bin / java -version”
您可能安装了多个JVM
答案 1 :(得分:1)
正如已经提到的那样 - 你正在尝试使用后来的编译器使用旧的jvm编译的字节代码。
请注意,如果 PATH 包含多个不同版本的java可执行文件,您可以使用' - version'键轻松切换它们。
假设您的 PATH 中有java5和java6,java5位于java6之前。您可以看到默认情况下使用java5(如果执行'java -version',则会打印相应的信息)。但是,您可以使用'java -version:1.6 ...'之类的命令轻松启动java6(例如,如果您执行'java -version:1.6 -version',您会看到使用java6。)
答案 2 :(得分:0)
导出需要在sh文件中使用的java和jre home。
使用导出的java home运行jar
e.g
export JAVA_HOME=/opt/java6
export JRE_HOME=/opt/java6/jre
/opt/java6/bin/java -Xms2048m -Xmx2048m -jar abc.jar $1