制作一个单jar的java应用程序

Poj*_*ojo 5 java executable jar

如果我有一个由几种不同类型的文件(图片,声音等)和多个jar依赖项组成的java项目,那么将它们全部打包到一个可以双击的jar中的好方法是什么?

我知道罐子本身是相当愚蠢的,因为他们不看自己所依赖的文件(我只是在一丝沮丧之后才意识到这一点(轻描淡写)). - 如果jar A依赖于jar B中包含的类,那么将jar B放入jar A中是行不通的.Jar A必须与jar B在同一目录中.

...现在,我知道我可以从所有其他jar中提取所有文件并将所有文件放在同一目录中.这排序工作,但我不想这样做,因为:1,这将是混乱和2.它仍然不会解决需要有在同一目录作为最终罐子的声音文件的问题.(无论出于何种原因,声音文件的行为与内部罐子完全相同)

基本上,我只是想做到这一点,以便我的应用程序所依赖的文件不是令人讨厌的可见和炫耀.所以,如果有一些解决方案,我可以将所有内容放在一个jar中,并让它成为运行整个程序的唯一必要文件,那将是最佳的.但是,我愿意接受创造性/创造性的方法来绕过这个问题,比如让父目录中的批处理脚本执行jar或其他东西.(我说"或者其他什么"因为那个确切的场景只适用于Windows操作系统....你知道我的意思!)

msc*_*ker 5

Apache Maven加上阴影插件将完全满足您的需求。

查看可执行 JAR示例。


zie*_*mer 2

您可以提取所有 JAR 并将它们合并到一个通用 JAR 中。有 ANT 任务和 Maven 插件可随时用于执行此操作。此外,如果您的应用程序编写正确,则没有什么可以阻止您将媒体文件和其他资源放入 JAR 中。您只需要确保这些资源是“从类路径加载”,而不是从当前工作目录加载。