Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使Eclipse包只包含必需的库?_Java_Eclipse_Jar_Executable Jar - Fatal编程技术网

Java 如何使Eclipse包只包含必需的库?

Java 如何使Eclipse包只包含必需的库?,java,eclipse,jar,executable-jar,Java,Eclipse,Jar,Executable Jar,在Eclipse中开发java应用程序之后,我想通过将其打包到一个可运行的.jar中来部署它,只使用主方法及其依赖项所需的最小值 我的工作区中也有几个包,但不需要在生成的.jar文件中 当我尝试导出时,它清楚地说,所需的libs将在那里,但其他独立的包也在里面。(使用导出选项时,情况完全相同) 我选择只导出com.project…包的主类,还导出已打包的test.project… 在这个项目中,我有com…和test…包 我如何才能强制它真正地只打包所需的 提前谢谢 临时答复(2019-07

在Eclipse中开发java应用程序之后,我想通过将其打包到一个可运行的
.jar
中来部署它,只使用主方法及其依赖项所需的最小值

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

当我尝试导出时,它清楚地说,所需的libs将在那里,但其他独立的包也在里面。(使用导出选项时,情况完全相同)

我选择只导出
com.project…
包的主类,还导出已打包的
test.project…

在这个项目中,我有
com…
test…

我如何才能强制它真正地只打包所需的

提前谢谢

临时答复(2019-07-03): 目前看来,似乎没有办法自动实现这一点,因此似乎是一个很好的解决办法

如果有更好的消息,请随时改进此线程


谢谢大家。

我将为此特定任务创建一个ANT文件。在那里,您可以自由定制哪些包应该编译到jar中,哪些不应该。 请通过阅读这个例子来激励自己

对于我所说的内容的总体概述,您可以快速查看一下。

请关注


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


在本页底部有一个包含有效生成参数的列表。

首先,我们必须区分生成和导出

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

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

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

  • 将不需要导出的所有内容构建到单独的文件夹中(或更多)
  • 从特定文件夹(或更多文件夹)导出
  • 对于步骤1,请参阅堆栈溢出

    简而言之:转到
    项目属性
    Java构建路径
    选项卡>
    允许源文件夹的输出文件夹
    。这使您能够为居中查看器中的每个源文件夹配置特定的输出文件夹

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

    因此,在导出之前,请转到
    Run
    runconfigurations…
    ,选择
    Classpath
    选项卡,删除默认的
    用户条目
    ,然后点击
    Advanced…
    。现在,您可以添加包含构建类的文件夹


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

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

    切换到intelliJ,这是我这么做的原因之一。我能够做您在eclipse中尝试做的事情的唯一方法是在构建代码之前手动选择我想要的一切。如果您试图从jar文件中获取包,最好手动从中获取所需的内容,并将其打包到依赖项jar文件或发布版本中?
    test
    来自哪里?它是在一个单独的项目中还是在同一个项目中?换句话说:您是否需要排除项目或项目内部的某些内容?@Joe我已经尝试过IntelliJ多次,但它不符合我的工作流程,这是我在Eclipse中发现的为数不多的令人讨厌的事情之一,我认为这还不足以作为切换的理由。@Izruo虽然我不“需要”,但我愿意这样做。正如我所说,我在项目中有多个包,但只想导出最小的包。感谢您的回答,欢迎使用StackOverflow。我想做的是使Eclipse能够自动识别必要的依赖项,并仅提取和编译这些依赖项。如果我必须手动执行此操作,那么在导出后移除不需要的包就足够了。我甚至可以用bash/python/whatever实现自动化,但这不是重点。@davidaberneromeclipse无法识别任何依赖项;您或者包本身必须声明它们(因此java9模块可能会工作,但我从来没有研究过)。然而,这是一种方法,我的答案只是另一种,尽管更面向接口。@Arnnuem我无法将链接与您提供的示例相关联。请提供更准确的链接或描述我如何在该网站上找到有关
    includes
    属性的文档?例如:它支持模式匹配吗?现在我开始期待