我在/ 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
经过一些Googlesearch之后,我发现(从上面提到的stackoverflow的一个民间人士),当Jar编译时使用比JRE更高版本的JDK时会发生这样的错误。
现在奇怪的是,如果我直接在shell上运行这个命令
java -jar umar.jar
它工作得很好。 如果jar是使用比我的JRE更高版本的JDK编译的,那么即使从shell也不能运行它。
你有什么build议?
比较“java -version”和“”$ JAVA_HOME“/ bin / java -version”
您可能已经安装了多个JVM
正如已经提到的 – 你正试图使用旧的jvm编译器编译的字节码。
请注意,如果您的PATH包含多个不同版本的Java可执行文件,您可以使用'-version'键轻松切换它们。
假设你的PATH中有java5和java6,而java5位于java6之前。 你可以看到默认情况下使用java5(如果你执行'java -version',它会打印相应的信息)。 不过,你可以使用像'java -version:1.6 …'这样的命令轻松启动java6(例如,如果你执行'java -version:1.6 -version',你会看到使用了java6。
导出你需要在sh文件中使用的java和jre home。
使用导出的java home运行jar
例如
export JAVA_HOME=/opt/java6 export JRE_HOME=/opt/java6/jre /opt/java6/bin/java -Xms2048m -Xmx2048m -jar abc.jar $1