zoukankan      html  css  js  c++  java
  • 识别jar的编译JDK版本

    解压jar,获取xxx.calss文件

    dos命令行javap -verbose classname

    import java.io.InputStream;
    import java.io.PrintWriter;
    
    public class CMD命令 {
        public static void main(String[] args) {
            String filePath = "D:/git/new_baiwang/sdk-java/sdk-java/target/classes/com/baiwang/bop/Constants.class";
            docmd(filePath);
        }
    
        static void docmd(String filePath) {
            String[] command = { "cmd", };
            Process p = null;
            try {
                p = Runtime.getRuntime().exec(command);
                new Thread(new SyncPipe(p.getInputStream())).start();
                new Thread(new SyncPipe(p.getErrorStream())).start();
                PrintWriter stdin = new PrintWriter(p.getOutputStream());
                String ml = "javap -verbose " + filePath;
                stdin.println(ml);
                stdin.close();
            } catch (Exception e) {
                throw new RuntimeException("编译出现错误:" + e.getMessage());
            }
        }
    }
    
    class SyncPipe implements Runnable {
    
        private final InputStream istrm_;
    
        public SyncPipe(InputStream istrm) {
            istrm_ = istrm;
        }
    
        public void run() {
            try {
                final byte[] buffer = new byte[10240];
                StringBuffer sbf = new StringBuffer();
                for (int length = 0; (length = istrm_.read(buffer)) != -1;) {
                    sbf.append(new String(buffer, 0, length));
                }
                String msg = sbf.toString();
                if (msg.length() > 10) {
                    if (msg.contains("major version: 50")) {
                        System.out.println("编译的JDK版本是1.6");
                    } else if (msg.contains("major version: 51")) {
                        System.out.println("编译的JDK版本是1.7");
                    } else if (msg.contains("major version: 52")) {
                        System.out.println("编译的JDK版本是1.8");
                    } else {
                        System.err.println("运行错误,未知版本!");
                        System.out.println(msg);
                    }
    
                } else {
                    System.err.println("运行错误,没有想要的信息!");
                }
            } catch (Exception e) {
                throw new RuntimeException("处理命令出现错误:" + e.getMessage());
            }
        }
    }
  • 相关阅读:
    刘翔那点事
    网站建站模板
    搞笑!from 饮水思源
    我de虚拟经济学系列第一章 经济危机拼命建桥
    IT民工系列——c#操作Microsoft IE,实现自动登录吧!
    商业智能的发展及其应用
    我de虚拟经济学系列第三章 常见的致富之路
    IT民工系列——c#操作EditGrid,自己做一个在线Excel数据库吧!
    Asp.net下的Singleton模式
    asp.net 控件功能小结
  • 原文地址:https://www.cnblogs.com/chenglc/p/7517706.html
Copyright © 2011-2022 走看看