如何使 Eclipse 包只需要库?

How to make Eclipse package ONLY required libraries?

在 Eclipse 中开发了一个 java 应用程序后,我想通过将其打包到一个可运行的 .jar 中来部署它 主要方法及其依赖项。

我的工作区中也有几个包,但不需要在生成的 .jar 文件中。

当我尝试导出时,它清楚地表明所需的库将在那里,而且其他独立包也在里面。 (与导出选项完全相同)

我选择只导出com.project...包的Mainclass,test.project...也已经打包好了

在项目中我显然有 com...test... 包。

我怎样才能强制它真正打包 需要的?

提前致谢。

临时答案(2019-07-03):

似乎目前还没有办法自动实现这一点,因此 似乎是一个很好的解决方法。

如果有更好的消息,请随时改进本帖。

谢谢大家

我会为此特定任务创建一个 ANT 文件。在那里你可以自由定制哪些包应该被编译到 jar 中,哪些不是。 请阅读此示例以激励自己。

要了解我所说的内容,您可以快速浏览一下。 https://howtodoinjava.com/ant/ant-build-jar-file-example/

请关注

<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
        includes="src/path/to/TheClassToBeIncluded.java" />

有关如何包含或排除文件或包的更多详细信息,您应该参考此处的文档:

https://ant.apache.org/manual/Tasks/javac.html

在此页面底部有一个包含有效构建参数的列表。

首先,我们要区分构建和导出。

Build.java 源代码转换为 .class 字节代码,并主要复制其他资源。这样做时,它通常会将所有源文件夹合并到一个 bin 文件夹中。

Export 运行构建(或依赖于 自动构建),然后修改生成的 .class 文件和其他资源.通常它将它们打包成一个或多个 .jar 个文件。

因此,我们的解决方案包括两个步骤:

  1. 构建不需要导出的所有内容到单独的文件夹(或更多)
  2. 从特定文件夹(或更多)导出

关于第 1 步,请参阅 Stack Overflow 上的 this answer

简而言之:转到 Project Properties > Java Build Path > Source 选项卡 > Allow output folder for source folders。这使您能够为中心查看器中的每个源文件夹配置特定的输出文件夹。

对于第 2 步,我们需要了解 Eclipse 的运行nable Jar 文件导出 依赖于启动配置

所以在导出之前,转到 Run > Run Configurations...、select Classpath 选项卡,删除默认 User Entries 并点击 Advanced....现在您可以 Add Folders 包含您构建的 类.

您可能希望使用单独的 运行 配置进行内部测试和导出。

多年来我一直断断续续地与这个问题作斗争,假设只有我没有找到正确的解决方案。可能的解决方案似乎总是涉及详细的手动配置,例如配置构建路径,或选择 类 导出到 jar 的文件夹,或学习 ant,但仍需要手动配置。问题是 类(和包)之间的相互依赖关系很复杂 - 想象一下从 import 语句绘制网络图。手动配置非常耗时、容易出错,而且我认为除了在简单的情况下是不可行的。我有点愕然。如果没有用于选择必要 类 的自动解决方案,我想人们会定期导出他们的整个代码库,并且这个世界充满了臃肿的罐子......(顺便说一句,没有混淆,整个源代码库因此可以通过逆向工程获得)。