我正在使用反射在运行时加载 MyClass.class
(外部文件)。
MyClass.class
使用库 Bar
,这意味着我需要将 import foo.Bar;
放在文件。
但是,Bar
库已经在主类加载MyClass
中加载了。
有没有办法让我告诉 javac 忽略 Bar
不存在并且在没有它的情况下编译?
最佳答案
不,这是不可能的。当编译一个类时,编译器没有“内存”哪些类已经被“加载”(不要将这与类加载相关的概念混淆——那是完全不同的故事)。每当编译一个类并且发现对不在同一个包中的类的引用时,一个 import
声明是必需的。
话虽如此,您的问题似乎存在矛盾:从您所说的来看,MyClass
已经编译,因为文件 MyClass.class
存在,所以这里没有涉及编译器。加载的是类加载器。在这种情况下,就类加载器而言,如果 Bar
已经在主类中被引用,那么它不会从 MyClass
中再次加载.
关于java - 我可以告诉 javac 忽略缺少 `import foo.Bar` 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31973367/