文档章节

扫描JAR包中文件

谢雨齐
 谢雨齐
发布于 2017/11/07 11:08
字数 194
阅读 13
收藏 0

Talk is cheap,show me the code!

如下代码,搜索lib包下的所有jar包中含有‘System.gc’ 的class文件

public class FindClass {
    public static final String path = "/home/amber/project/demo/WEB-INF/lib/"; //jar包父目录
    public static final String keywords = "System.gc"; //关键字
    public static void main(String[] args){
        File file = new File(path);
        final Pattern p = Pattern.compile(".+\\.jar$");
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if(p.matcher(pathname.getPath()).matches()){
                    return true;
                }else{
                    return false;
                }
            }
        });

        search(files);
    }

    private static void search(File[] files){
        try{
            for(File f : files){

                System.out.println("当前扫描jar:" + f.getPath());

                if(f.isDirectory()){
                    search(f.listFiles());
                }else{
                    ZipFile jar = new ZipFile(f);
                    Enumeration enumration = jar.entries();
                    while(enumration.hasMoreElements()){
                        ZipEntry zipEntry = (ZipEntry)enumration.nextElement();

                        InputStreamReader isr = new InputStreamReader(jar.getInputStream(zipEntry));
                        BufferedReader br = new BufferedReader(isr);
                        String line = br.readLine();
                        int line_num = 1;
                        while(null != line){
                            if(line.contains(keywords)){
                                System.out.println(f.getPath() + ","  +zipEntry.getName() + "," + "line number = " + line_num);
                            }
                            line = br.readLine();
                            line_num++;
                        }
                    }
                }
            }
        }catch(ZipException z_e){
            z_e.printStackTrace();
        }catch(IOException io_e){
            io_e.printStackTrace();
        }
    }
}

 

© 著作权归作者所有

共有 人打赏支持
谢雨齐
粉丝 0
博文 15
码字总数 2188
作品 0
东城
程序员
私信 提问
JavaEE Spring+Mybatis整合

1. MyBatis整合Spring所需的jar包如下: Spring的jar包 Mybatis的jar包 Mybatis-Spring整合包,即mybatis-spring-1.3.2.jar MySql的数据库驱动jar包 数据库连接池的jar包 2.整合思路 MyBati...

凌浩雨
04/16
0
0
项目质量管理工具--JBoss Tattletale

JBoss Tattletale是一个能获得你从事的项目或产品的概览的工具。此工具可递归扫描JAR包的文件,并生成带文件链接的格式化的HTML报告。 JBoss Tattletale提供的报告可帮助你获得项目的质量。 ...

匿名
2009/04/28
1K
0
gradle springboot 多模块打包jar

springboot多模块打包后,无法扫描子包jar. 在idea中是可以正常运行. 但是gradle build项目打包成jar 后无法扫描到子模块的类. gradle有没有把子模块的class文件合成到主模块下. 或者把第三方...

渔泯小镇
2017/06/29
1K
3
从包package中获取所有的Class

import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.E......

快慢机
2012/03/29
0
0
关于struts零配置时的问题

最近项目使用了比较多的零配置和自动注入的语法,遇到了点小问题。 一般在本地eclipse开发完成后,发布上服务器上都是采用jar包的形式将业务逻辑代码打包好放到WEB-INF/lib下,遇到了在本地可...

sohoku
2012/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的MemCheckpointStreamFactory

序 本文主要研究一下flink的MemCheckpointStreamFactory CheckpointStreamFactory flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/CheckpointStreamFactory.java /*......

go4it
23分钟前
1
0
注册全局组件

注册全局组件的好处是,可以直接在html中直接调用组件而不用每次都要在vue文件中注册组件,坏处也是很明显的,因为每个vue都默认加载了全局组件,所以全局组件如果非常庞大,会拖慢所有页面的...

Carbenson
29分钟前
1
0
二十分钟教你如何将区块链应用与函数计算相结合

前言 本篇文章适合对区块链应用感兴趣或是想要通过函数计算服务进一步开发区块链应用的新人。本文将结合阿里云区块链服务、阿里云函数计算服务、阿里云日志服务 以及社区应用 Marbles,手把手...

阿里云官方博客
31分钟前
1
0
Double数相加后结果不准确

在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十...

嘴角轻扬30
39分钟前
1
0
去除移动端点击效果

移动端点击时,会有一个类似active的短暂背景淡出效果,去除该效果可使用 -webkit-tap-highlight-color: rgba(255, 0, 0, 0);

originDu
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部