从shell脚本运行jar

时间:2009-10-20 02:24:06

标签: java linux shell scripting jar

我在/ 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运行。

你有什么建议?

3 个答案:

答案 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