gpt4 book ai didi

java - 磁盘上的 .class 文件是否必须遵循与其在 Java 中的限定名称相同的目录结构才能运行它?

转载 作者:行者123 更新时间:2023-11-29 07:17:21 24 4
gpt4 key购买 nike

在阅读了动态类加载(即从磁盘加载 .class 文件)后,我有点担心。

假设我有一个名为 MyClass.class 的文件,其中包含类 a.b.c.MyClass。假设我现在决定将文件移动到 C:\(我在 Windows 中的根文件夹),我想动态加载此类。这可能吗?据我了解,MyClass 路径似乎始终必须采用 *a/b/c.MyClass 格式。

因此,下面的代码似乎不起作用:

URL[] urls = new URL[] { new File("C:\\").toURL() };
URLClassLoader classLoader = new URLClassLoader(urls);
Class<?> targetClass = classLoader.loadClass("a.b.c.MyClass");

强制我们将 .class 文件放在反射(reflect)其完整内部名称的目录结构中是疯狂的,IMO。我错过了什么吗?

这个事实的一个可能含义是,如果我决定将几个 .class 文件复制到一个临时目录中,以便我可以对它们执行一些很棒的魔法,我将不得不复制他们所有的脏路径都在同一个临时目录中,充其量这很尴尬。

最佳答案

Does a .class file on disk have to follow the same directory structure as its qualified name in Java for us to run it?

是的,如果您使用的是标准类加载器。

理论上,您可以实现一个使用不同方案来定位类文件的自定义类加载器。但很有可能在(例如)调试代码时遇到问题。所以我不推荐它。

关于java - 磁盘上的 .class 文件是否必须遵循与其在 Java 中的限定名称相同的目录结构才能运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com