我正在使用一些第三方代码,这些代码在给定'-classpath'命令行参数时不会设置java.class.path,而是仅创建一个类加载器,将命令行中指定的类路径中所有项的所有url添加到类加载器,然后将其设置为上下文类加载器。
在我编写的此代码的插件类中,我获得了该类加载器的实例,并且需要某种方式使用它来获取基础类路径,以便可以在调用JavaCompiler.getTask(... ),并即时编译其他一些代码。
但是,似乎没有从ClassLoader获取ClassPath的方法,并且由于未设置java.class.path,因此我似乎无法访问应用程序最初是通过...调用的基础类路径。
最佳答案
如果类加载器使用URL,则它必须是URLClassloader
。您可以访问的URL为其父类ClassLoader
定义了类路径。
要获取URL,只需执行以下操作:
((URLClassLoader) (Thread.currentThread().getContextClassLoader())).getURLs()