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

查找从何处加载Java类

曾光远
2023-03-14
问题内容

有谁知道如何以编程方式找出java类加载器实际从何处加载类?

我经常在大型项目中使用类路径,并且手动搜索并不是一个好的选择。我最近遇到了一个问题,其中类加载器正在加载不正确的类版本,因为它位于两个不同位置的类路径上。

那么,如何让类加载器告诉我实际的类文件来自磁盘上的什么地方呢?

编辑:如果类加载器由于版本不匹配(或其他原因)而实际上无法加载该类,该怎么办,在读取它之前我们是否能找出它试图读取的文件?


问题答案:

这是一个例子:

package foo;

public class Test
{
    public static void main(String[] args)
    {
        ClassLoader loader = Test.class.getClassLoader();
        System.out.println(loader.getResource("foo/Test.class"));
    }
}

打印出:

file:/C:/Users/Jon/Test/foo/Test.class


 类似资料:
  • 问题内容: 我在其他地方找不到这个问题的明确答案,因此我将在这里尝试: 是否有某种方法(以编程方式或其他方式)来获取Application Classloader加载时所加载的JAR /类列表的确切顺序?应用程序类加载器,我是指在应用程序服务器(WLS,WAS,JBoss …)中加载EAR应用程序的类加载器,但显然,它适用于任何类加载器。 因此,概括地说,我想找出的是由指定类加载器加载的JAR的列

  • 我有这样的代码 但之后我尝试在页面上查找元素,WebDriverWait会一直等到页面完全加载,然后开始搜索。如果我尝试这样的事情

  • 问题内容: 我想通过JSESSIONID 获取Java 。可能吗?如果是,怎么办? 问题答案: 你需要收集所有在用你自己。 只需按以下所示注册即可运行: 然后,在任何您想做的地方都可以解决问题。 也就是说,这是一种 巨大的 气味。当然,解决 实际 功能需求的方法肯定比这更好;)正如我在您的后续问题中评论的那样: 这是您第二次询问一个在现实世界中永远不应该实践的问题。老实说,这一切都有味道。这是什么

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

  • 问题内容: 带有以下源代码: 我可以用: 实例化该类,但我必须将此源文件()放在类路径中 我想从数据库动态加载此类(将源代码存储为或) 这可能吗 ? 问题答案: 假设您已经编译了该类,则可以创建一个,从数据库中加载该类。 如果数据库仅包含源代码,则必须首先对其进行编译-查看Java编译器API,了解如何在没有任何文件的情况下执行此操作。 请注意,只要类加载器处于活动状态,以这种方式加载的类就会保持

  • 问题内容: 我想提供有关正在使用的JAXP实现以及从中加载哪个JAR文件的诊断信息。 实现此目的的一种方法是在的实例中创建,然后检查该类的属性: 是否有更好的方法可以实现这一目标,而不必创建一个? 问题答案: 在没有实际创建实例的情况下,很难预测将要加载哪些具体的JAXP工厂实现,因为选择实现的过程非常困难。 从官方JAXP常见问题解答(问题14)中: 当应用程序想要创建一个新的JAXP 实例时,