【发布时间】:2016-11-13 17:38:54
【问题描述】:
JDK 中未包含的包(例如javax.websocket)需要下载并使用-cp 或CLASSPATH 环境变量引用才能导入(否则会出现编译错误包 X 不存在)。
编译后得到.class文件后,是否可以将这些文件传送到没有有javax.websocket包的计算机上,让该计算机上的JVM运行它们,或者是否需要在两台计算机上都有该软件包?
换句话说:当你写import bar.foo;时,你实际上是在写“每次你看到foo,去这个位置看看它是什么。”。但是,当您编译完源代码后,字节码是否仍然说“去这个位置看看它是什么”,还是它已经去那个位置并“导入”了所有内容,以便不再需要该位置?
【问题讨论】:
-
请注意,
import语句仅用于编译。他们在运行时什么都不做。见this answer。是的,如果你要使用一个类,它需要在运行时可用。 -
你在运行时也需要外部库
-
@SotiriosDelimanolis 你是说如果 Java 设计者允许你在没有它们的情况下编译源代码,那么可以省略任何 import 语句,只要你确保包在运行时可用?
-
@Gendarme 它们的存在是为了让您可以使用简单的类型名称,不限定,即。没有他们的包名前缀。如果没有它们,您将不得不在任何地方使用完全限定名称。
标签: java compilation package