首页 > 其他分享 >获得所有的class文件名,该怎么做

获得所有的class文件名,该怎么做

时间:2023-06-29 15:24:25浏览次数:37  
标签:String 文件名 currentFile baseDir 获得 classNames File class

 要获取 Java 项目中所有类名,可以通过以下步骤实现:

  1. 使用反射获取项目中所有的类:

 

  

//获得所有的class文件名
public class getclassfilename {
    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
        List<String> classNames = new ArrayList<>();
        try {
            // 获取当前类加载器
            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            // 获取当前类加载器加载的所有资源的 URL
            URL url = classLoader.getResource("");
            // 如果是文件系统的路径
            if (url.getProtocol().equals("file")) {
                String basePath = URLDecoder.decode(url.getFile(), "UTF-8");
                File baseDir = new File(basePath);
                // 递归扫描文件夹中的所有文件
                scanClasses(classNames, baseDir, baseDir);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        for (String className : classNames) {
            System.out.println(className);
        }

    }
    // 递归扫描文件夹中的所有文件
    private static void scanClasses(List<String> classNames, File baseDir, File currentFile) {
        if (currentFile.isDirectory()) {
            File[] files = currentFile.listFiles();
            if (files != null && files.length > 0) {
                for (File file : files) {
                    scanClasses(classNames, baseDir, file);
                }
            }
        } else if (currentFile.isFile() && currentFile.getName().endsWith(".class")) {
            String classPath = currentFile.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1);
            String className = classPath.replace(File.separator, ".").replace(".class", "");
            classNames.add(className);
        }
    }
}

 

打印所有类名:

 

这样就能获取到 Java 项目中所有的类名了。请注意,该方法仅适用于在类文件是以文件系统形式存储的情况下,对于 JAR 文件中的类是无法获取到的。另外,如果项目中有很多类文件,可能会需要一定的时间来扫描和获取类名。


标签:String,文件名,currentFile,baseDir,获得,classNames,File,class
From: https://www.cnblogs.com/2324hh/p/17514270.html

相关文章

  • 获得所有的class文件名,该怎么做
    ​ 要获取Java项目中所有类名,可以通过以下步骤实现:使用反射获取项目中所有的类:   //获得所有的class文件名publicclassgetclassfilename{//这是一个main方法,是程序的入口:publicstaticvoidmain(String[]args){List<String>className......
  • 如何获得 java项目下面所有的文件名
    ​ 要获取Java项目中所有的文件名,可以通过以下步骤实现:使用递归遍历获取项目中所有的文件://获得所有的文件名publicclassgetfilename{//这是一个main方法,是程序的入口:publicstaticvoidmain(String[]args){List<String>fileNames=newA......
  • Element Table 根据列的label class 自动计算合计
    定义table求和方法exportfunctiongetSummariesByTableColumn(param,opt){opt.sumText??='合计'opt.getColProperty??=rawProp=>rawPropconst{columns,data}=paramconstsums=[]columns.forEach((column,index)=>{if(i......
  • 重组您的 DTC 电子商务以获得数据中心的最佳性能
    DTC运营商下一阶段的关键在与如何构建基于数据中台的电商运营体系,进行多平台电商店铺的运营规划管理,构建多店铺的电商绩效看板和绩效分析体系,以及将现有的电商店铺平台运营能力沉淀到平台和模型中来。我们认为目前DTC运营商的关键点在于建立基于数据中台的电商运营体系,将......
  • jmeter 导入jmx脚本时,报错ConnotResolveClassException
     问题:使用V3.1版本的jmeter写了一个脚本,然后电脑上装了一个V5.1.1版本的jmeter,将脚本到如到jmeter上时,报错 ConnotResolveClassException,具体报错如下图所示,导入另外一个脚本并没有报错原因:如下图所示,报错内容是:kg.apc.jmetere.timers.VariableThroughputTimer.意思......
  • 华为云Classroom一站式教学实践平台,开启云端教学新征程
    随着高考落下帷幕,各高校将迎来新一届大学新生入学,他们的学长学姐们经过四年的学习,也即将步入社会,迈向一段新的人生旅程。在这里小智先祝大家未来一切顺意,不忘初心,大鹏一日同风起,扶摇直上九万里。高校作为教育主阵地,培养人才的摇篮,承担着国家和社会发展的重要责任,然而高校在开发人才......
  • 【lazada接口系列】获得lazada商品详情API接口采集商品规格信息调用示例
    ​Lazada商品详情API接口的作用是获取Lazada电商平台上的某一商品的详情信息,包括商品的名称、销售价格、库存数量、图片、商品描述、品牌、产地、售后保障等信息。开发者可以使用该API接口获取到商品的原始数据,进行分析、筛选等操作。通过该接口获取到的商品详情数据可以结合其......
  • ACQUITY UPLC H-Class PLUS二元系统的功能与串联四极杆技术相结合,用于常规定量UPLC-MS
    超高效液相色谱仪ACQUITYUPLCH-ClassPLUSACQUITYUPLCH-ClassPLUS系统拥有新一代超高性能仪器,是一款具有出色分离度的四元或二元液相色谱(LC)系统。为了获得真正的UPLC性能,要求系统扩散性(或柱外谱带展宽)能够与填充亚2μm粒径颗粒的细孔色谱柱相关的峰宽相匹配。尽管其他系统......
  • selenium根据class属性、tag名选择元素
    根据class属性选择元素元素也有类型,class属性就用来标志着元素类型若网页html内容如下:<body><divclass="plant"><span>土豆</span></div><divclass="plant"><span>洋葱</span></div>......
  • 【1688阿里巴巴api接口】获得店铺详情数据PHP展示示例
    ​店铺详情API接口的作用是获取一个电商平台上某个店铺的详细信息,包括店铺名称、销售商品数量、好评度、logo、店铺描述等。开发者可以通过该接口获取到店铺的原始数据,方便进行数据分析、爬取等操作。通过该接口获取到的店铺详情数据可以结合其他数据进行深度挖掘,例如可以将店铺......