JAVA 调用 SAP SQL 报错 okhttp3/OkHttpClient : Unsupported major.minor version 51.0

在尝试使用Java执行SAP SQL任务时,遇到错误'UnsupportedClassVersionError',原因是使用的JDK版本为1.6,而依赖的okhttp库需要JDK1.6+。解决方案是升级到兼容的JDK版本或使用专门为JDK1.6构建的okhttp3.8.0-jdk1.6.jar。

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+,特此网上寻找:
下载地址:请点击下载icon-default.png?t=M5H6https://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;
    }

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值