2022-05-17 12:18:45,448--AWS Schedule_Worker-7--org.quartz.JobExecutionException: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.UnsupportedClassVersionError: okhttp3/OkHttpClient : Unsupported major.minor version 51.0] [See nested exception: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.UnsupportedClassVersionError: okhttp3/OkHttpClient : Unsupported major.minor version 51.0]]
... 1 more
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at com.jack.aws.hrm.job.erpJob.SapHrPtZDLZMessagePushNoticeJob.execute(SapHrPtZDLZMessagePushNoticeJob.java:55)
at com.jack.aws.hrm.job.erpJob.SapHrPtZDLZMessagePushNoticeJob.getZDLZList(SapHrPtZDLZMessagePushNoticeJob.java:82)
at com.jack.util.HttpUtils.sendSapPost(HttpUtils.java:304)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass1(Native Method)
Caused by: java.lang.UnsupportedClassVersionError: okhttp3/OkHttpClient : Unsupported major.minor version 51.0
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.UnsupportedClassVersionError: okhttp3/OkHttpClient : Unsupported major.minor version 51.0]
在运行以下代码的时候,系统报错:
原因是我使用的是JDK1.6,但是使用jar需要的环境是JDK1.6+,特此网上寻找:
下载地址:请点击下载
https://download.youkuaiyun.com/download/momingfan/85489960
JDK1.6:okhttp3.8.0-jdk1.6.jar
JDK1.6+:okhttp-3.12.13.jar;okio-1.15.0.jar
public static Response sendSapPost(String url,String sql) {
Response response = null;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"SQL\":\""+sql+"\"}");
Request request = new Request.Builder()
.url(url)
.method("POST", body)
//.addHeader("User-Agent", "apifox/1.0.0 (https://www.apifox.cn)")
.addHeader("Content-Type", "application/json")
.addHeader("Content-Length", "")
.build();
try {
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
业务:
针对使用调取SAP sql数据:
获取自动离职名单
private static JSONArray getZDLZList(String date,String url){
JSONArray result = new JSONArray();
String sql = "select PERNR,BEGDA from PA0000 WHERE PA0000.ENDDA = '99991231' AND PA0000.MASSN = 'Z8' AND PA0000.AEDTM = '"+date+"'";
Response response = HttpUtils.sendSapPost(url,sql);
try {
result = JSONArray.parseArray(JSONObject.parseObject(response.body().string()).getString("RESULT"));
for (int i = 0; i < result.size(); i++) {
JSONObject newJsonObject = result.getJSONObject(i);
JSONObject infoJson = getInfoQuery(newJsonObject.getString("PERNR"));
JSONObject deptInfo = getUpBM(infoJson.getString("T527X~ORGEH"),date,url);
if( deptInfo != null){
newJsonObject.put("upDeptName",deptInfo.getString("ORGTX"));
newJsonObject.put("name",infoJson.getString("PA0001~ENAME").replace(" ",""));
newJsonObject.put("code","【UTF-8】");
newJsonObject.put("OAID",getOANumber(newJsonObject.getString("PERNR"),url));
}
result.set(i,newJsonObject);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
获取上级部门名称:
private static JSONObject getUpBM(String orgeh,String date,String url){
JSONArray result = new JSONArray();
String sql = "select ORGTX from T527X WHERE T527X.ORGEH = (select SOBID from HRP1001 WHERE HRP1001.OTYPE = 'O' AND HRP1001.OBJID = '"+orgeh+"' AND HRP1001.RSIGN = 'A' AND HRP1001.RELAT = '002' AND HRP1001.BEGDA <= "+date+" AND HRP1001.ENDDA >= "+date+" )";
Response response = HttpUtils.sendSapPost(url,sql);
try {
result = JSONArray.parseArray(JSONObject.parseObject(response.body().string()).getString("RESULT"));
} catch (IOException e) {
e.printStackTrace();
}
return result.getJSONObject(0);
}
获取人员信息-直接部门code
private static JSONObject getInfoQuery(String pernr){
JSONArray result = new JSONArray();
String resultStr = HttpUtils.doWsPost("http://127.0.0.1:8065");
if(StringUtils.isNotEmpty(resultStr)){
result = JSONArray.parseArray(resultStr);
if(result.size() >0 ){
return result.getJSONObject(0);
}
return null;
}
return null;
}
获取员工OA工号
private static String getOANumber(String pernr,String url){
JSONArray result = new JSONArray();
String sql = "select USRID from PA0105 WHERE PA0105.USRTY = 1008 AND PA0105.PERNR = "+pernr;
Response response = HttpUtils.sendSapPost(url,sql);
try {
result = JSONArray.parseArray(JSONObject.parseObject(response.body().string()).getString("RESULT"));
if(result != null && !result.isEmpty()){
return result.getJSONObject(0).getString("USRID").toLowerCase();
}
} catch (IOException e) {
e.printStackTrace();
}
return pernr;
}
在尝试使用Java执行SAP SQL任务时,遇到错误'UnsupportedClassVersionError',原因是使用的JDK版本为1.6,而依赖的okhttp库需要JDK1.6+。解决方案是升级到兼容的JDK版本或使用专门为JDK1.6构建的okhttp3.8.0-jdk1.6.jar。
1278





