【问题标题】:Classpath and portability类路径和可移植性
【发布时间】:2013-03-29 17:12:55
【问题描述】:

我是 Java 新手,正在使用 Eclipse 编写 Java 代码。

我添加了很多库 (.jar) 文件作为引用库。我还将我的项目导出为JAR 文件。我的问题是,如果我在引用的库与我的计算机不在同一位置的计算机上运行此文件,它会成功运行吗?

我还制作了一个runnable JAR 文件,与之前的文件(~24 KB)相比,它的大小要大得多(~29 MB)。

【问题讨论】:

  • 您应该查看“可运行的 JAR 文件”——我怀疑它会包含所有依赖项的内容。
  • @JonSkeet 是的,确实如此。但不是只有较小的文件可以在其他机器上运行吗?
  • 不,因为那样其他机器就没有你依赖的代码了。

标签: java eclipse classpath


【解决方案1】:

我的问题是,如果我在引用的库与我的计算机不在同一位置的计算机上运行此文件,它会成功运行吗?

没有。您需要将引用的 JAR 与您的程序 JAR 一起打包。最终用户必须下载程序所依赖的所有库会很不方便。有几个选项,都可以使用 Eclipse 导出功能。

  1. 解压缩所有依赖的 JAR,并将它们与您的代码一起打包到一个可执行的 JAR 中。
  2. 在您的程序 JAR 清单中指定类路径,该路径将包含您的依赖 JAR 位置的相对路径。例如,这些可能位于lib 文件夹中。 lib 文件夹相对于您的程序 JAR 的位置对于您的所有最终用户来说都必须相同,因此将它们打包在一起是有意义的。

【讨论】:

    【解决方案2】:

    这取决于您使用可运行 jar 应用程序打包 jar 的方式。如果你在 jar 内部或外部执行此操作,那么你应该在 manifest.mf 中创建一个类路径条目。

    【讨论】:

      【解决方案3】:

      您甚至可以将参考库捆绑在同一个 jar 中。因此,当您将尺寸减小到该程度时,我假设您从 jar 中删除了这些尺寸,这在大多数情况下都不是好方法。不建议不要包含引用的 jar,除非您 100%(甚至不是 99.9%)确定这些库将在您要运行的系统中。

      编辑: 要在 Eclipse 中包含引用的 jar,您需要转到 project-properties>java-build-path>order-and-export 在这里检查你想要的任何库。

      【讨论】:

      • 但是有一个问题。如果我创建一个runnable JAR,我必须指定一个主类,但我不想这样做。如何将库捆绑在 jar 文件中(在 Eclipse 中)?
      • 不,不需要主类。图书馆没有。但是如果你想让它可以运行,你必须指定主类。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2013-08-09
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多