我可以告诉javac忽略`import foo.Bar`的缺失吗?

uPa*_*xit 4 java import compilation javac compiler-optimization

MyClass.class在运行时使用反射加载(外部文件).

MyClass.class使用库Bar,这意味着我需要放在import foo.Bar;文件的顶部.

但是,该Bar库已加载到主类加载中MyClass.

有没有办法让我告诉javac忽略Bar不存在而只是编译没有它?

man*_*uti 6

不,这是不可能的.编译类时,编译器没有已经"加载"哪些类的"内存"(不要将其与类加载相关的概念混淆 - 这是一个完全不同的故事).每当编译一个类并且找到一个不在同一个包中的类的引用时,import就需要一个语句.

这就是说,你的问题似乎有一个矛盾:从你说的,MyClass已经编译因为文件MyClass.class存在,所以这里没有涉及编译器.这是加载的类加载器.在这种情况下,就类加载器而言,如果Bar已在主类中引用,则不会从内部再次加载MyClass.