如何在java中使用ClassPath::getAllClasses(Guava lib)?

发布于 2025-01-09 21:41:14 字数 886 浏览 1 评论 0原文

我正在尝试加载我在此处定义的类,例如 DemoApplication.class 和 Test.class。我使用的是 guava 31.0.1-jre,并使用了 ClassPath.from().getAllClasses(),但它似乎只获取运行时类,而我想要的这两个类没有被加载。 我不确定我正在做的事情是否完全错误。

       public static void main(String[] args) throws ClassNotFoundException, IOException {
        File file = new File("C:\\DemoApplication.class");
        URL url = file.toURI().toURL();
        File file1 = new File("C:\\Test.class");
        URL url1 = file1.toURI().toURL();
        int count=0;
        URLClassLoader classLoader = new URLClassLoader(new URL[]{url,url1});
        for (ClassPath.ClassInfo classInfo : ClassPath.from(classLoader).getAllClasses()) {
            if (classInfo.getName().contains("DemoApplication")){
// I didn't get any output here 
                System.out.println(classInfo.getName());
            }
        }
        System.out.println(count);
    }

I'm trying to load classes that I defined here such as DemoApplication.class and Test.class. I'm using guava 31.0.1-jre, and used ClassPath.from().getAllClasses(), but it seems to only get runtime classes and these two classes I want are not being loaded.
I'm not sure if what I'm doing is totally in the wrong way.

       public static void main(String[] args) throws ClassNotFoundException, IOException {
        File file = new File("C:\\DemoApplication.class");
        URL url = file.toURI().toURL();
        File file1 = new File("C:\\Test.class");
        URL url1 = file1.toURI().toURL();
        int count=0;
        URLClassLoader classLoader = new URLClassLoader(new URL[]{url,url1});
        for (ClassPath.ClassInfo classInfo : ClassPath.from(classLoader).getAllClasses()) {
            if (classInfo.getName().contains("DemoApplication")){
// I didn't get any output here 
                System.out.println(classInfo.getName());
            }
        }
        System.out.println(count);
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

变身佩奇 2025-01-16 21:41:14

使用 jar 文件而不是 .class 文件解决了这个问题!

 File file1 = new File("C:\\target.jar");
 URL url1 = file1.toURI().toURL();

Using jar files instead of .class files fixed this!

 File file1 = new File("C:\\target.jar");
 URL url1 = file1.toURI().toURL();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文