在Linux上执行.sh文件时出现Java版本问题?

3
我有一个.sh文件,内容如下。
export JAVA_HOME=/usr/jdk/latest
export PATH=$JAVA_HOME/bin:$PATH
java -Dlogback.configurationFile=./conf/logback.xml  -cp CLASSPATH:Client.jar com.test.main.Client 
exit

如果我运行此脚本,会出现以下错误信息。
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/test/main/Client : Unsupported major.minor version 52.0

我阅读了一些文档,它们说由于Java版本问题,这种情况正在发生。我已经检查了我的本地机器版本和Linux服务器版本,两者都相同。我正在使用Gradle 2.4构建应用程序,并将sourceCompatibility和targetCompatibility设置为1.8。

sourceCompatibility = 1.8
targetCompatibility = 1.8

本地计算机的Java版本。

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)

Linux服务器Java版本

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

如果我只是编辑.sh文件(添加空格),然后运行它,它可以正常工作。请问有人能帮助解决这个问题吗?

1
截图很小,请附上您的Gradle配置。 - Yuri
3
/usr/jdk/latest/bin/java -version 的输出是什么? - Radek Postołowicz
1
请确认一下,这个命令确实是 /usr/jdk/latest/bin/java -version,而不是只有 java -version - Radek Postołowicz
1
所以在编辑文件后运行,可能是您的sh脚本在Windows和Linux之间存在“EOL Conversion”问题。我不确定。 - pmverma
1
你使用的是哪个Linux发行版? - pmverma
显示剩余4条评论
1个回答

0

您在编译8版本时使用了旧的Java版本(8之前的版本)。

请下载JDK8并安装,然后将您的脚本中的JAVA_HOME指向新安装的JDK。


2
他已经安装了Java 8,他只需要指定它来使用即可。 - pmverma
@pmverma 你确定是 jdk 而不是 jre 吗? - Radek Postołowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接