Java 为什么导出到runnable jar会让应用占用这么多空间? 背景

Java 为什么导出到runnable jar会让应用占用这么多空间? 背景,java,eclipse,jar,Java,Eclipse,Jar,我使用SWT、WindowsBuilder和Eclipse作为IDE制作了一个可以在Windows操作系统(可能还有其他操作系统)上运行的小util 该应用程序旨在帮助开发者尽可能地将图像转换为WebP/Jpeg,从而最小化Android应用程序的大小。有空 问题 我想让人们更容易地运行它,所以我称之为“导出为可运行jar” 一旦我这样做了,我注意到,从一个只需要几MB的应用程序(需要SWT和一个exe转换器文件),它就有超过20MB的存储空间 我试过的 查看文件结构,我发现: 导出向导只有两

我使用SWT、WindowsBuilder和Eclipse作为IDE制作了一个可以在Windows操作系统(可能还有其他操作系统)上运行的小util

该应用程序旨在帮助开发者尽可能地将图像转换为WebP/Jpeg,从而最小化Android应用程序的大小。有空

问题 我想让人们更容易地运行它,所以我称之为“导出为可运行jar”

一旦我这样做了,我注意到,从一个只需要几MB的应用程序(需要SWT和一个exe转换器文件),它就有超过20MB的存储空间

我试过的 查看文件结构,我发现:

导出向导只有两个步骤:选择作为可运行jar导出,这一步:

所以我不知道如何配置它。我试图更改正在运行的配置,但如果我删除其他JAR,它将无法运行:

Error: Could not find or load main class webpifier.Main

选择恢复默认条目,我会得到额外的JAR:

Error: Could not find or load main class webpifier.Main

问题 这怎么可能?这些罐子都需要吗?是否可以避免添加如此大的文件块?这些文件的目的是什么


对于其他OSs,仅仅替换SWT文件(和转换器文件)就足以让应用程序运行吗?或者我也应该在另一个操作系统上调用“export as runnable jar”(这是Java,为什么我要这么做?

我将发表我的评论作为回答:

这怎么可能?这些罐子都需要吗


只有你知道,如果真的需要所有的罐子。
所有引用到项目的JAR通常也会复制到分发文件夹(也是未使用的JAR)。
进一步:当您使用Eclipse RCP或SWT时,所有需要的Eclipse/SWT-JAR也会复制到分发文件夹中

我建议用Swing代替SWT。
Swing已经包含在Java库中,但SWT没有。
所以你不需要分发所有的SWT-JAR

提示:
要减少应用程序的分发大小,请尝试删除所有:
org.eclipse.
-Imports


有关SWT与Swing的更多重要信息,请参见此处:

只有您知道,如果真的需要所有jar的话。也许你引用了未使用的罐子?当您使用EclipseRCP或SWT时,还将复制所有需要的Eclipse/SWT-JAR!)我不知道。这就是我问这个的原因。我使用了这些工具和这个功能,这就是我得到的。关于Swing,正如我(很久以前)将其与SWT进行比较一样,我发现SWT更优越,也有更好的本地外观和感觉。此外,由于项目已经完成,我认为转换为Swing需要花费太多时间。我甚至不认为使用Swing会有帮助,除了删除“swt.jar”文件。你能试着把这个项目导出为可运行的jar,看看能做些什么(当然不会破坏它)?“swt.jar”文件只有~2MB。其余的我不明白。SWT.jar可能引用了其他org.eclipse.*.jar。或者您正在使用来自其他eclipse.jar的类。查看您所有的
import org.eclipse.
imports。进一步:今天,swing的本机外观在Windows上与其他应用程序并没有什么不同。com.ibm.icu*的用途是什么?它是11MB@androiddeveloper:您说转换到swing会花费太多时间,但您整个项目中只有8个类(少于2000个LOC)。我认为这是值得的麻烦!