将Java(JRE)捆绑到Spring Boot包/ JAR中?

4
有没有一种方法可以将一个Spring Boot应用程序打包成一个可执行的jar文件,包括JRE?
我记得我看到过有人这样做(Josh Long?),结果是一个可以通过java -jar foo.jar启动的jar文件,甚至可以通过./foo.jar启动。
我在谷歌上搜索了一个小时,但找不到任何相关文档,有人能帮帮我吗?
编辑:
我刚刚找到了我在会议上看到的东西。spring-boot 1.3引入了一些被称为可执行jar的东西,它们用一个shell脚本包装了jar。 启用此功能可以像这样运行您的jar: ./my.jar 并将其绑定到unix init系统。 但是,您仍然需要在主机上安装Java。
在Gradle中启用此功能非常简单,只需将以下内容添加到build.gradle中。
springBoot {
    executable = true
}

1
你正在尝试解决一个鸡生蛋或蛋生鸡的问题。如果JAR包含JRE,你想如何运行JAR?这个操作系统是用来运行什么的?你可能正在寻找Java程序的安装程序。在这里看看:https://dev59.com/BnVC5IYBdhLWcg3wykYt - Marged
所以我们正在讨论一个Linux解决方案。这似乎是Oracle在其Java安装程序中使用的相同技巧,或者是他们在这里执行的操作:http://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts - Marged
2个回答

2

你可能正在使用Maven。这个maven插件可以让你创建一个包含所有依赖项的单一jar文件。接下来,你可以使用像jwrapper这样的工具,在多个平台上构建带有嵌入式JRE的可执行文件。


它是否也捆绑了JRE? - Marged
据我所知,它不捆绑JRE。 - borysfan
2
那么你还认为这是一个合适的答案吗?;-) - Marged
你可以使用外部工具,如jwrapper - borysfan
这只是部分答案 ;) 但是通过我的关于jwrapper的评论,我们可以假设这是完整的答案 ;) - borysfan
我建议您更新您的答案,这样原帖作者就不必阅读两个条目了。希望这能让那个投票者撤销-1的投票。 - Marged

2
你应该考虑使用一个Java安装程序/包装器,它将创建一个本地二进制文件,其中包含你的代码/jar和JRE(某些解决方案甚至可以为你下载JRE)。积极的副作用是,如果需要的话,你可以为Linux、Windows和Mac创建解决方案。
如果你想坚持使用简单的仅限Linux的解决方案,你可能想尝试这个:包含二进制可执行文件的Bash脚本

我一直在寻找Spring提供的开箱即用的解决方案,但似乎并不存在。因此,这是最好的答案,现在接受它作为解决方案。 - hennr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接