我的 Java 类是从文件系统的哪个位置加载的?

2022-09-01 18:34:53

我认为这是每个Java程序员都会遇到的情况,如果他们这样做的时间足够长的话。您正在执行一些调试并对类进行更改。当您重新运行程序时,这些更改似乎没有被拾取,而是旧类似乎仍在运行。你清理并重建一切,同样的问题。有时,这可以归结为类路径问题,同一类不止一次地出现在类路径上,但似乎没有一种简单的方法来找出正在加载的类来自哪里......

有没有办法找到已加载类的文件路径?最好是从文件或文件加载类时可以使用的东西。有什么想法吗?.class.jar


答案 1

只需使用标准命令行开关“”运行(请参阅 java 文档)。这将在每次加载类时打印出来,并告诉您从哪里加载它。java-verbose:class


答案 2

如果要从应用程序内部以编程方式执行此操作,请尝试:

URL loc = MyClass.class.getProtectionDomain().getCodeSource().getLocation();

(注意,getCodeSource() 可能会返回 null,所以实际上不要在一行中完成所有这些操作:))