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

时间:2015-08-12 19:01:24

标签: java import compilation javac compiler-optimization

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

不,javac命令中没有这样的选项。