zoukankan      html  css  js  c++  java
  • java手动加载jar

        @RequestMapping("/testJar")
        public @ResponseBody String exteriorJar(int ys, int csd,int jg,int sf,int yf,int sd){
            String result = "error";
            //从数据库中读取算法类
            String sql = "select EXTERIOR from T_EXTERIOR where id=2";
            InputStream ins = null;
            try{
                Connection con = jdbcTemplate.getDataSource().getConnection();
                Statement ps = con.createStatement();
                ResultSet rs = ps.executeQuery(sql);
                while(rs.next()){
                    Blob blob = rs.getBlob("EXTERIOR");
                    ins = blob.getBinaryStream();
                }
                File file = new File("test.jar");
                OutputStream os = new FileOutputStream(file);
                byte[] bt = new byte[1024];
                int size = 0;
                while((size=ins.read(bt))!=-1){
                    os.write(bt,0,size);
                }
                os.flush();
                os.close();
                ins.close();
                
                URLClassLoader loader = new URLClassLoader(new URL[]{new URL("file:"+file.getAbsolutePath())});
                Class cs = loader.loadClass("com.tf.userApp.bean.Exterior");
                Object obj = cs.newInstance();
                
                Method[] methods = obj.getClass().getMethods();
                for(Method method : methods){
                    if(method.getName().equals("add")){
                        Class[] css = method.getParameterTypes();
                        Object[] params = new Object[css.length];
                        params[0] = ys;
                        params[1] = csd;
                        params[2] = jg;
                        params[3] = sf;
                        params[4] = yf;
                        params[5] = sd;
                        /**
                        int index = 0;
                        for(Class cs : css){
                            if(String.class == cs){
                                params[index++] = "String val is :" + index;
                            }
                        }*/
                        Object rt = method.invoke(obj, params);
                        if(rt.getClass() == Integer.class){
                            result = String.valueOf((Integer)rt);
                        }else if(rt.getClass()==String.class){
                            result = (String)rt;
                        }
                    }
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
            
            return result;
        } 
  • 相关阅读:
    CSS设置行高
    微信小程序-水平垂直居中
    CSS布局
    HTML学习笔记—标签
    微信小程序--通过请求网页获取信息并显示
    docker 安装完mysql 后客户端无法访问
    Docker
    docker安装成功启动失败
    嵌入式Servlet容器自动配置和启动原理
    springboot外置的Servlet容器
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4252637.html
Copyright © 2011-2022 走看看