如何确定加载类的绝对路径(如果有)?

发布于 2024-10-09 18:21:38 字数 106 浏览 6 评论 0原文

是否有一种(兼容的,如果可能的话)方法来确定加载类的绝对路径?

当然,这并不总是可能的(如果您考虑动态创建的类),但是 如果加载的类位于 jar 内,如何获取该 jar 的绝对路径?

Is there a (compatible, if possible) way to determine the absolute path of a loaded Class?

Of course, this is not always possible (if you think of dynamically created classes), but
if the loaded Class is inside a jar how to get the absolute path for this jar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画中仙 2024-10-16 18:21:38
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()  

完整代码:

    package org.life.java.so.questions;
   /**
     *
     * @author jigar
     */
    public class GetClassPath {
        public static void main(String[] args) {
            System.out.println(GetClassPath.class.getProtectionDomain().getCodeSource().getLocation().getPath());      
        }
    }

输出:

/C:/Documents%20and%20Settings/argus/My%20Documents/NetBeansProjects/temp/build/classes/

或者

ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()  

Fullcode:

    package org.life.java.so.questions;
   /**
     *
     * @author jigar
     */
    public class GetClassPath {
        public static void main(String[] args) {
            System.out.println(GetClassPath.class.getProtectionDomain().getCodeSource().getLocation().getPath());      
        }
    }

Output:

/C:/Documents%20and%20Settings/argus/My%20Documents/NetBeansProjects/temp/build/classes/

Or

ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
じ违心 2024-10-16 18:21:38

尝试这样的事情:

SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();

如果类是从 jar 加载的,结果应该是这样的:

jar://myjar.jar!path/to/SomeClass.class

Try something like this:

SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();

If the class is loaded from jar the result should be something like:

jar://myjar.jar!path/to/SomeClass.class
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文