当前位置: 首页 > 面试题库 >

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

范书
2023-03-14
问题内容

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


问题答案:

如果类加载器使用URL,则必须为URLClassloader。您可以访问的是URL,该URL 为其父 定义了
类路径ClassLoader

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

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


 类似资料:
  • 问题内容: 我是Java UI编程的新手。 如何在Java中从主类调用UI类 基本上 运行程序时如何加载GUI。目前,当我运行代码时什么也没有发生。 GUI CLass 根据评论中的要求,我已经上传了GUI类代码 问题答案:

  • 问题内容: 我有一个遵循标准目录布局的项目设置(虽然未使用Maven): 本机DLL位于资源文件夹中,而源位于Java文件夹中。resources文件夹是Java类路径的成员。 我现在想加载DLL,而不必设置JRE 选项或设置变量,以便可以通过简单的双击来启动生成的jar文件。 运行jar文件时是否可以将资源文件夹添加到库搜索路径而无需进行其他配置?例如,设置与清单中的相似? 问题答案: 直到今天

  • 在运行jar文件时,有没有可能将资源文件夹添加到库搜索路径中,而不必做额外的配置?例如。使用与清单中的类似的设置?

  • 问题内容: 假设我在JVM中有一个已加载的类。是否有 可靠的 方法向JVM请求 字节码 .class的内容?即是这样的: (显然,会和一样好)。我知道我可以使用(和朋友们)来获取类文件,但是锤击类名称以获取要馈送给getResource的URL感觉是错误的。另外,我不确定在动态生成(例如使用)的情况下的行为。 有什么更好的主意吗? 注意:目标是能够推动 字节码 类到另一个JVM并使用自定义类加载器

  • 我使用Java代理(Agent.class)来转换程序(Program.class)中的方法,其中包括对代理类的调用。 我已经检查了Agent和Program类的类加载器及其父类,它们的层次结构如下: 特工。类: 当程序执行添加的指令时,它会抛出一个ClassNotFoundExcture它找不到Agent类,因为它是由不同的类加载器加载的。 作为一个临时解决方案,我尝试强制成为带有反射的的父级,

  • 我试图修改几个类的字节代码,这些类的打包jar文件不在类路径中-它们是在给定URL的运行时由自定义的加载的。我尝试使用和来拦截那些类,但失败了。类加载器是遗留项目的一部分,因此我无法直接对其进行更改。 代理可以很好地处理AppClassLoader“本地”加载的类,但只会忽略那些由自定义类加载器加载的类。 CustomClassLoader: 我的代理中使用的ClassFileTransforme