第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在類路徑中讀取Java包中的所有類?

如何在類路徑中讀取Java包中的所有類?

達令說 2019-09-02 09:04:10
我需要讀取Java包中包含的類。這些類在classpath中。我需要直接從Java程序執(zhí)行此任務。你知道一個簡單的方法嗎?List<Class> classes = readClassesFrom("my.package")
查看完整描述

3 回答

?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

您可以使用此處描述的Reflections項目


它非常完整且易于使用。


以上網(wǎng)站的簡要說明:


Reflections會掃描您的類路徑,索引元數(shù)據(jù),允許您在運行時查詢它,并可以為項目中的許多模塊保存和收集該信息。


例:


Reflections reflections = new Reflections(

    new ConfigurationBuilder()

        .setUrls(ClasspathHelper.forJavaClassPath())

);

Set<Class<?>> types = reflections.getTypesAnnotatedWith(Scannable.class);


查看完整回答
反對 回復 2019-09-02
?
一只萌萌小番薯

TA貢獻1795條經(jīng)驗 獲得超7個贊

我使用這個,它適用于文件或jar檔案


public static ArrayList<String>getClassNamesFromPackage(String packageName) throws IOException{

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

    URL packageURL;

    ArrayList<String> names = new ArrayList<String>();;


    packageName = packageName.replace(".", "/");

    packageURL = classLoader.getResource(packageName);


    if(packageURL.getProtocol().equals("jar")){

        String jarFileName;

        JarFile jf ;

        Enumeration<JarEntry> jarEntries;

        String entryName;


        // build jar file name, then loop through zipped entries

        jarFileName = URLDecoder.decode(packageURL.getFile(), "UTF-8");

        jarFileName = jarFileName.substring(5,jarFileName.indexOf("!"));

        System.out.println(">"+jarFileName);

        jf = new JarFile(jarFileName);

        jarEntries = jf.entries();

        while(jarEntries.hasMoreElements()){

            entryName = jarEntries.nextElement().getName();

            if(entryName.startsWith(packageName) && entryName.length()>packageName.length()+5){

                entryName = entryName.substring(packageName.length(),entryName.lastIndexOf('.'));

                names.add(entryName);

            }

        }


    // loop through files in classpath

    }else{

    URI uri = new URI(packageURL.toString());

    File folder = new File(uri.getPath());

        // won't work with path which contains blank (%20)

        // File folder = new File(packageURL.getFile()); 

        File[] contenuti = folder.listFiles();

        String entryName;

        for(File actual: contenuti){

            entryName = actual.getName();

            entryName = entryName.substring(0, entryName.lastIndexOf('.'));

            names.add(entryName);

        }

    }

    return names;

}


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 689 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號