我有一个executable-jar,可以使用java -jar app.jar运行,但SDK是326 an 。这可太多了。
jlink可以创建一个JRE,但是我不能使用jlink,因为我有一个非模块化应用程序。
你能告诉我如何创建JRE吗?
发布于 2022-09-24 23:36:56
jlink可以用于为非模块化应用程序创建‘JRE’/运行时映像。在这种情况下,它无法自动派生应该在运行时映像中运行的模块。它们必须手动指定。
例如,如果我有一个简单的app.jar
$ java -jar app.jar
Hello World!然后使用jlink创建运行时映像,只使用java.base模块:
jlink --output runtime --add-modules java.base --strip-debug --no-header-files --no-man-pages然后,我可以在运行时映像中使用java可执行文件运行jar:
$ ./runtime/bin/java -jar app.jar
Hello World!运行时映像仅为35 MB (尽管这可能因平台而异)。
可以使用jdeps来了解应该使用哪些模块创建运行时映像:
$ jdeps --print-module-deps add.jar
java.base这将打印一个以逗号分隔的模块列表,这些模块可以作为参数直接传递给jlink的jlink选项。
发布于 2022-09-24 23:15:52
https://stackoverflow.com/questions/73839878
复制相似问题