识别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());
}
}
}
识别jar的编译JDK版本的更多相关文章
- jar包、jdk版本、兼容性
对jar包.jdk版本,以及不同jdk版本的jar包的兼容性有一些疑问,搜集一些资料于此 查看jar包的jdk版本 查看.jar包中的META-INF\MANIFEST.MF Build-Jdk: 1 ...
- 查看jar包的jdk版本并降级
用解压工具打开jar包(例子都是用7zip) 进入到META-INF目录,查看MANIFEST.MF文件,查看Bulid-Jdk,下图就为1.7.0_55版本的JDK,这就表示jetty-serv ...
- Java9系列第三篇-同一个Jar支持多JDK版本运行
我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...
- 查看编译后的calss文件编译jdk版本
使用UtralEdit或者sublime text打开编译后的.class文件, 其中cafe babe为magic number(魔数),标识这个文件是java的class文件. 0033转换成10 ...
- Eclipse项目修改编译jdk版本(Failed to read candidate component class: file 处理)
转: Failed to read candidate component class: file 处理 2018年03月09日 07:15:54 爱萨萨 阅读数 10041 出错现象: org. ...
- 查看jar包的jdk版本
- 到底如何配置 maven 编译插件的 JDK 版本
千言万语不及官方文档,详情请阅读 compiler:compile 文档 配置 maven 编译插件的 JDK 版本 maven 编译插件(maven-compiler-plugin)有默认编译 JD ...
- 兼容性测试中如何切换和管理多个JDK版本
本文由作者邹珍珍授权网易云社区发布. 一.测试背景: 项目对外提供JAR包,需要测试该JAR包对不同JDK版本(1.6至1.9版本)的兼容性.下面主要介绍在兼容性测试中,JDK多版本共存时如何配置环境 ...
- jdk版本对应数字
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springfr ...
随机推荐
- Centos7 中Nginx的安装与配置
安装与配置 1.安装nginx yum intsall nginxsudo systemctl start nginx 启动服务sudo firewall-cmd --permanent --zone ...
- 准备新的代码迁移到cnblogs
http://www.cnblogs.com/danghuijian/ http://www.cnblogs.com/danghuijian/
- 尼姆博弈扩展形式(一): 限定每次取物的上限。NYOJ-135,难度5~~~
取石子(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:5 http://acm.nyist.net/JudgeOnline/problem.php?pid=135 描述 小 ...
- Maven的scope依赖作用域说明
Maven的scope依赖作用域说明 1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2.compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3.provid ...
- 尽量写出大家都能看懂的ReactJS入门教程
个人感觉ReactJS相比于传统的JS框架还是挺有意思的,主要是它将JS代码和HTML代码完美的结合在了一起,有点jsp把java代码和html混在一起写的意思?但是它通过组件的形式实现了代码可复用, ...
- [NOIP2001] 提高组 洛谷P1025 数的划分
题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法. 输 ...
- 事件和委托: 第 6 页 .Net Framework中的委托与事件
原文发布时间为:2008-11-01 -- 来源于本人的百度文章 [由搬家工具导入] .Net Framework中的委托与事件 尽管上面的范例很好地完成了我们想要完成的工作,但是我们不仅疑惑:为什么 ...
- HDU 5521 Meeting【最短路】
今天旁观了Angry_Newbie的模拟区域赛(2015shenyang) 倒着看最先看的M题,很明显的最短路问题,在我看懂的时候他们已经开始敲B了. 后来听说D过了很多人.. D题一看是个博弈,给了 ...
- Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- storm的例子,一个非常好的网址
https://insight.io/github.com/apache/storm/tree/HEAD/examples/storm-elasticsearch-examples/src/main/ ...