java - 导入的包编译后是否包含在.class文件中?

标签 java compilation package

JDK中未包含的包(例如javax.websocket)需要下载并通过-cpCLASSPATH引用code> 环境变量才能导入(否则您会收到编译错误package X does not exit)。

编译后,获得.class文件时,是否可以将这些文件传输到没有javax.websocket包的计算机上,并且有该计算机上的 JVM 运行它们,或者是否有必要在两台计算机上都安装该软件包?

换句话说:当您编写 import bar.foo; 时,您实际上是在编写“每次看到 foo 时,请转到此位置并查看它是什么。”。但是,当您编译源代码时,字节代码是否仍然说“转到此位置并查看它是什么”,或者它是否已经转到该位置并“导入”所有内容,以便不再需要该位置?

最佳答案

After compilation, when the .class files are obtained, is it possible to transfer these files to a computer that does not have the javax.websocket package, and have the JVM on that computer run them, or is it necessary to have the package on both computers?

两台计算机上都必须有该软件包。字节码假定相关类在运行时可供 JVM 使用。

此外,即使在同一台计算机上进行编译和运行也是如此:Java 编译器从其中提取包进行编译的位置可能与 JVM 在运行代码时提取包的位置不同。

关于java - 导入的包编译后是否包含在.class文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38312613/

相关文章:

java - 是否可以在返回类型上添加注释

c++ - { token 之前的预期类名

C++ 错误 : passing ‘const std::vector<Node>’ as ‘this’ argument discards qualifiers [-fpermissive]

css - less css,定义空字符串变量

python - 如何使用 setup.cfg 设置 Python 包配置文件

java - 如何创建 hazelcast 实例

java - 从 jar 加载文件夹

java - 如何向 Hibernate 过滤器添加大于/小于

包限定名称。 Package::<&var> 与 &Package::var 之间的差异(如果有的话)?

command-line - Windows 上的 Dart 命令行应用程序无法导入包