java - 如何从类加载器获取类路径?

标签 java classloader contextclassloader

我正在使用一些第三方代码,当给定“-classpath”命令行参数时,它不会设置 java.class.path,而是创建一个类加载器,为命令行指定类路径上的项目添加所有 url到类加载器,然后将其设置为上下文类加载器。 在我编写的这段代码的插件类中,我得到了这个类加载器的一个实例,并且不知何故需要使用它来取回底层的类路径,以便我可以在调用 JavaCompiler.getTask(... ) 并即时编译一些其他代码。 但是,似乎无论如何都无法从 ClassLoader 获取 ClassPath,并且由于 java.class.path 未设置,我似乎无法访问应用程序最初调用的底层类路径......有什么想法吗?

最佳答案

如果类加载器使用 URL,它必须是 URLClassloader。您可以访问的是为它定义 classpath 及其父 ClassLoader 的 URL。

要获取 URL,只需执行以下操作:

((URLClassLoader) (Thread.currentThread().getContextClassLoader())).getURLs()

关于java - 如何从类加载器获取类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613988/

相关文章:

java - 配置弹出窗口的宽度、换行和字体

无论我正确输入,Java 都没有运行我的扫描仪

java - 无法删除标题栏 Android 应用程序

java - 类加载器(和 Guice)表现得很奇怪

java - JMeter中解决库冲突的方法?

java - 在java中的线程和标志之间交换多个对象

Java : Executing a method of an arbitrary class in a sub package

java - 编译类加载器很有趣,在这种情况下,子类如何从不同的类加载器加载有什么想法吗?

java - 在 ClassLoader 上调用 `defineClass` 会导致 "No matching method found"

java - 使用什么类加载器?