【问题标题】:Export of runnable Java Class to .jar file including only required dependencies [duplicate]将可运行的 Java 类导出到 .jar 文件,仅包括所需的依赖项[重复]
【发布时间】:2012-06-20 15:35:22
【问题描述】:

可能重复:
How to determine which classes are used by a Java program?

我在 Eclipse 上有一个 Java 项目,其中包含很多 Java 类。我想将其中一个导出为 .jar 文件,但遇到了一些问题。

我已经阅读了一些现有的线程,但我没有得到满足我要求的正确答案,因为:

如果我选择“导出到 JAR 文件”,我会导出正确的类,但 .jar 文件不包含运行 jar 文件所需的依赖项。

如果我选择“导出到可运行的 JAR 文件”,生成的 jar 文件将包含所有依赖项,但也会放入整个项目中的所有其他类(也包括我不需要的类)。

如何将单个 Java 类导出到 .jar 文件,其中还包括运行 jar 文件所需的库?生成的 jar 文件必须尽可能小。

非常感谢。

【问题讨论】:

  • 你在用maven吗?查看assembly plugin
  • 我也有同样的问题 - 我写了一个简单的程序,并且包含所有常见的东西,它的重量超过 3Meg!我敢肯定,如果我可以只用它实际需要的类来构建 jar,它会很小。

标签: java eclipse jar dependencies export


【解决方案1】:

您可以创建一个仅包含您需要的类的新项目,并将该项目导出为可运行的 jar。

【讨论】:

  • 这只是一个文件的解决方案,但是每次我必须导出一个类时,我都必须创建一个新项目。在一个可能意味着大量工作的大项目中。或者即使我只需要一个类但该类需要项目之外的其他类,我也必须查找所需的每个类并将其移动到新项目中。为什么不能自动保持导出的应用程序小?
【解决方案2】:

可能有一种解决方法,具体取决于您需要的用例。通常,不可能进行完整的依赖分析,因为您的代码可能会在运行时加载类等。 如果您需要 .jar 尽可能小(例如,如果您希望能够“klickstart”应用程序的某些部分而不是多余地浪费存储空间),您可以使用

Export... -> Runnable JAR File -> Copy required libraries into a sub-folder...

ant 然后为所有 jar 只保留一份外部库的副本。 请提供有关您的用例的更多信息,以便我们发布更具体的答案:)

【讨论】:

  • 用例很简单。我有一个项目,它包含许多框架(外部库、源文件等)和许多类文件(其中一些带有 main 方法)。现在我想用一个可运行的 jar 文件中的 main 方法导出每个类。然后,我想量化不同罐子的大小。如果我使用导出作为可运行的 Jar 文件,Eclipse 会将整个项目的所有类放入该 jar 文件中。如果我只使用 Export Jar,导出的 jar 将不会包含所需的库等。我知道项目有点混乱,但我没有实现它,我只是想分析一下。
【解决方案3】:

试试这个,这是在eclipse中创建jar或者runnable jar的方法

File -> Export-> Java ->Runnbale JAR file

Launch configuration : your Class containing the public static void main(String[] args)

Export destination : Target place

Library Handling:

Package required libraries into generated JAR

FINISH

【讨论】:

  • 我已经这样做了。不幸的是,这并不能解决我的问题,因为可运行的 jar 包含整个 Eclipse 项目的所有文件。
  • @fachexot 这里有同样的问题......仍然没有解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 2015-09-08
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
相关资源
最近更新 更多