【问题标题】:Exporting external classes into JAR - Eclipse将外部类导出到 JAR - Eclipse
【发布时间】:2010-02-19 05:24:00
【问题描述】:

我的项目所需的类文件很少。我已在适当的文件夹结构中将它们添加到源文件夹本身中。我的限制是我必须提供一个包含所有依赖类的 jar 文件。它不能是可执行的 jar 文件。

现在我面临的问题是,当我在 eclipse 中选择导出来导出 jar 文件时,我没有得到我在源文件夹中添加的类文件(.class),被导出了。它们甚至没有在包资源管理器中列出。我怎样才能做到这一点?需要修改导出设置吗?

说实话,我的项目是这样的

project
     src
       com
         test
            file1.java
            file2.java
          external
            class1.class
            class2.class

现在我希望为我的源文件生成的类和我自己添加的类文件都导出到 jar 中。

【问题讨论】:

标签: java eclipse jar external-dependencies


【解决方案1】:

也许你需要export Runnable JAR file

编辑:如果您有很多依赖项,那么 jar 收缩器/混淆器是您最好的朋友。请参阅ProguardyGuard。对于 Proguard,有一个 Eclipse plugin。或者您可以使用 Ant 手动集成其中任何一个。

【讨论】:

  • 是的。如果除了那些类文件之外我没有引用这么多库,我会考虑这个选项。
  • 编辑答案以包含可能有用的混淆器信息。
【解决方案2】:

首先,如果您的类不在代表其包的各自目录中,我不确定它们是否可以工作。

project
     src
       com
         test
            file1.java
            file2.java
          external
            org
              extproject
                subpackage
                  class1.class
                  class2.class

然后,我宁愿尝试添加一个 linked folder 引用这些类的根目录,并在将项目导出到 Jar 时选择该文件夹。

project
     src
       com
         test
            file1.java
            file2.java
     org (linked to c:/another/path/to/ext/project/classes)
       extproject
         subpackage
            class1.class
            class2.class

【讨论】:

    【解决方案3】:

    每当我实现需要交付给客户的应用程序时,我都会包含某种构建脚本,用于从命令行构建分发。例如,Ant “build.xml” 文件、Maven “pom.xml” 文件甚至是 Makefile。为了处理您的特殊情况,脚本将包含一个步骤,将所有相关类组装到一个临时目录树中,并从中创建发行版 JAR 文件。

    我不喜欢依赖某些 IDE 的变幻莫测来进行生产构建。

    【讨论】:

      【解决方案4】:

      我会使用 Maven 和 Maven Assembly Plugin - 这使得制作具有依赖关系的 jar 非常容易 - 甚至是可执行的 jar。

      缺点是学习如何充分利用 Maven 需要一些时间 - 但是一旦您更改项目以使用它,您会发现生活变得更加简单。当您使用 Eclipse 时,我可以推荐这个插件:M2 Eclipse Plugin

      【讨论】:

        【解决方案5】:

        src 文件夹通常不用于保存 .class 文件。 Eclipse 查看已构建的 .class 文件并创建 jar 文件。因此,您可以将外部 .class 文件添加到项目下的“lib 或其他”文件夹中。然后构建您的项目并导出 jar 文件。您将看到 jar 文件现在包含一个名为 lib 或其他名称的文件夹以及您的外部 .class 文件。

        【讨论】:

          猜你喜欢
          • 2017-09-30
          • 2013-09-23
          • 1970-01-01
          • 1970-01-01
          • 2013-04-14
          • 2016-10-20
          • 2015-07-07
          • 2015-10-09
          • 1970-01-01
          相关资源
          最近更新 更多