有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用jlink向自定义运行时映像添加外部库?

我想将项目所需的外部库添加到自定义运行时映像中

我在项目中使用以下外部库:vlcj。jar,vlcj javafx。罐子

对于vlcj。jar要工作,我还需要添加外部库:jna。jar,jna平台。jar,vlcj本地人。罐子

如果我重写我的应用程序,这样我就不需要使用vlcj。jar和vlcj javafx。jar,则自定义运行时映像创建行如下所示:

jlink --no-header-files --no-man-pages --compress=2 --strip-debug --module-path 'path/to/javafx-jmods-15.0.1' --add-modules javafx.controls,javafx.web --output /path/to/RuntimeImage

然后我创建应用程序的jar:

cd path/to/myapp
jar cvfe path/to/myApp.jar MainClass *.*

然后我添加了myApp。jarRuntimeImage并运行应用程序:

cd path/to/RuntimeImage
path/to/RuntimeImage/bin/java -jar myApp.jar

应用程序启动。情况很好

唯一不好的是,它在没有VLCJ的情况下工作。 如何将外部VLCJ库添加到自定义运行时映像,并使用它运行我的应用程序


共 (1) 个答案

  1. # 1 楼答案

    自定义运行时映像不支持自动模块(非模块JAR),因此jlink映像中没有任何依赖JAR,该映像定义了用于与vlc一起运行的类路径

    您可以在自己的jar中编辑META-INF\MANIFEST.MF,以指定类路径,以便可以从运行java -jar的同一目录中读取额外的jar:

    Class-Path: vlcj.jar vlcj-javafx.jar jna.jar jna-platform.jar vlcj-natives.jar
    

    或者使用显式类路径切换到应用程序的标准启动:

    path/to/RuntimeImage/bin/java -cp myApp.jar:vlcj.jar:vlcj-javafx.jar:jna.jar:jna-platform.jar:vlcj-natives.jar your.MainClass