java - 我可以告诉 javac 忽略缺少 `import foo.Bar` 吗?

标签 java import compilation javac compiler-optimization

我正在使用反射在运行时加载 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/

相关文章:

ios - 使用 Xcode 构建应用程序时,如何从头开始构建它?

java - Google App Engine - 内存缓存 - 热键警告

java - 自定义HashMap中的get方法

linux - 在 Debian Wheezy 上编译内核

linux - 无法使用sudo命令编译cuda

python - '导入错误: No module named pillow' in PyCharm

java - 找不到 'java.lang.StackTraceElement' 的转换器

java - 带有 ADO(连接和查询)的 DLL (Delphi) 在 Java 中不起作用(使用 jna)

Mysql "SOURCE <file>"importing of UTF8 dump 给出问号

python - 在 Python 中检测非点相对导入的工具?