.jar 文件是否需要将机器上的所有 类 安装到 运行?

Does a .jar file need all of the classes installed on a machine to run?

一个 .jar 文件是否需要安装在机器上的所有 classes 才能 运行?例如:如果我将一个程序作为 .jar 文件分发,我是否还需要在用户的机器上安装我所有的 .class 文件?如果是这样,有没有办法将 java 程序作为一个文件(例如可执行文件)分发?

类被编译成.jar文件,所以你不必在每台机器上都安装它们。是的,有一种方法可以分发可执行的 .jar 文件。

这取决于您构建 jar 的方式。 类 in your jar can depend on other 类 in your jar, and/or on 类 in your system installed other jars.在后一种情况下,如果您将 jar 分发给其他用户,它们可能无法工作。

您需要确保您构建和分发的 jar 包含您正在使用的所有依赖项。我听说 Maven 可以在这里提供帮助。

事实上,.jar 文件是一个可执行文件。您可以使用 java -jar jarFile.

来执行它

您的 jar 是否包含 class 到 运行 jar 的所有内容取决于您构建它的方式。
您可以将所有依赖项打包到您的 jar 中,这称为胖 jar,或者您可以只声明您的依赖项,然后使用 maven 或 gradle 等构建工具将您自己的 class 打包到 jar 中。在后面的方式中,用户可以使用相同的构建工具下载依赖项。通常后一种方式更好。