1. 执行shell脚本报 Unsupported major.minor version 52.0
报错原因:java文件jdk和服务器上的jdk不匹配,
解决方法:
a.查看当前服务器用的jdk是哪个版本:java -version
b.修改本地代码编译版本,如下图所示:
2.shell调有package修饰的类的时候,报NoClassDefFoundError
shell文件内容:
echo "htllo test"
java shell.PackageTest
摆放位置:
报错信息
报错原因:
这个java文件是带pacakge的,文件展示时候就应该把package文件夹加进去。
如下图所示:
3.shell调java传递最后一个参数是字符串,接收的却是数字型
报错原因(最初解决方案,不完善):
最后一个参数不能是字符串,把这个参数放到前面,把数值型参数放到最后,问题就解决了。
真实报错原因:
脚本中存在一句REPORT_TIME="$3 $4:00",REPORT_TIME 接收了两个参数,给java传一个变量REPORT_TIME,java main方法args数组接收了两个参数。
总结:
看到java main方法这边接受的最后一个参数不对,
a.先按正常逻辑把整个代码看一遍,看看是否哪里出现了逻辑错误。
b.可以从很多方面去做尝试,比如
在shell脚本在执行调用java文件前一句先打印这个参数看看对不对
把这个参数放到前面试一下,看看结果是否正常
在后面添加几个参数,看看是不是参数shell会对参数个数作限制