IntelliJ Idea+javafx+第三方库+dll 打包为jar

这篇博客记录了如何在IntelliJ IDEA中将一个使用javafx和opencv for java的项目,连同第三方库(dll)打包成jar。在运行时,需通过VM options指定dll路径,并使用System.loadLibrary加载。在处理FXML文件时,正确设置资源路径以避免错误。最终通过IDE的build功能完成打包。
部署运行你感兴趣的模型镜像

自己做的opencv for java 的javafx应用,在网上找了打包相关真是太费劲了。。记录一下以供自己之后用
首先打包相关配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在打包相关配置已经完成了。
在编译器中运行时,我们可以在在Run/Debug Configurations中 VM options写入:
-Djava.library.path={dll文件位置}
同时在代码中写入
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
来调用dll文件。
但是在jar包运行的时候,会提示找不到dll,我们需要把jar包中的dll解压到一个缓存中,然后load,就要修改代码为下:


    static {
        try {

            // getClass().getClassLoader().getResourceAsStream(arg0);
            // System.out.println("MainTest.class.getClass()"+MainTest.class.getClass().toString());
            InputStream in = Main.class
                    .getResourceAsStream("/resource/opencv_java410.dll");   //dll文件位置

            System.out.println("Main.class.getClass()" + in);

            File ffile = new File("");
            String filePath = null;
            filePath = ffile.getAbsolutePath() + File.separator
                    + "opencv_java410.dll";
            System.out.println("filePath opencv_java410.dll is " + filePath);
            File dll = new File(filePath);
            FileOutputStream out = new FileOutputStream(dll);   //缓存dll位置

            int i;
            byte[] buf = new byte[1024];
            try {
                while ((i = in.read(buf)) != -1) {
                    out.write(buf, 0, i);
                }
            } finally {
                in.close();
                out.close();
            }
            System.load(dll.getAbsolutePath());//
            dll.deleteOnExit();

        } catch (Exception e) {
            System.err.println("load jni error!");
        }
    }

另外,一定要注意在加载FXML文件时要用fxmlLoader.setLocation(getClass().getResource("/yixianyong/view/RootLayout.fxml"));或者类似的
而不是fxmlLoader.setLocation(getClass().getResource("…/view/RootLayout.fxml"));或者类似的
否则会出现错误:
在这里插入图片描述
最后打包:
在这里插入图片描述
在这里插入图片描述
build 或者rebuild都可以。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

构建进程终止异常: "C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=D:\idea\IntelliJ IDEA Community Edition 2024.2.3/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED -Dpreload.project.path=D:/workspace/ruoyisvn/RuoYi-master -Dpreload.config.path=C:/Users/光年之外/AppData/Roaming/JetBrains/IdeaIC2024.2/options -Dexternal.project.config=C:\Users\光年之外\AppData\Local\JetBrains\IdeaIC2024.2\projects\ruoyi-master.bfc02ee0\external_build_system -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=3581075957332224786 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IdeaIC2024.2 "-Djps.language.bundle=D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/localization-zh/lib/localization-zh.jar" "-Didea.home.path=D:/idea/IntelliJ IDEA Community Edition 2024.2.3" -Didea.config.path=C:/Users/光年之外/AppData/Roaming/JetBrains/IdeaIC2024.2 -Didea.plugins.path=C:/Users/光年之外/AppData/Roaming/JetBrains/IdeaIC2024.2/plugins -Djps.log.dir=C:/Users/光年之外/AppData/Local/JetBrains/IdeaIC2024.2/log/build-log "-Djps.fallback.jdk.home=D:/idea/IntelliJ IDEA Community Edition 2024.2.3/jbr" -Djps.fallback.jdk.version=21.0.4 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/光年之外/AppData/Local/JetBrains/IdeaIC2024.2/compile-server/ruoyi-master_cec7dabc/_temp_ -Djps.backward.ref.index.builder=true -Djps.backward.ref.index.builder.fs.case.sensitive=false "-Djps.kotlin.home=D:\idea\IntelliJ IDEA Community Edition 2024.2.3\plugins\Kotlin\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=\"C:\Users\光年之外\AppData\Local\Temp\kotlin-idea-14359822398897779739-is-running\" -Dide.propagate.context=false -classpath "D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jps-builders.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jps-builders-6.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jps-javac-extension.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/util-8.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/util_rt.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/platform-loader.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/annotations.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/trove.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jetbrains.kotlinx.metadata.jvm.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/protobuf.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/jps-model.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/javac2.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/forms_rt.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/util.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/aether-dependency-resolver.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/maven-resolver-connector-basic.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/maven-resolver-transport-file.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/maven-resolver-transport-http.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/idea_rt.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/lib/util-8.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/java/lib/jps/java-compiler-charts-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/javaFX/lib/javaFX-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/javaFX/lib/javaFX-common.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/eclipse/lib/eclipse-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/eclipse/lib/eclipse-common.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/platform-langInjection/lib/java-langInjection-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/Groovy/lib/groovy-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/Groovy/lib/groovy-constants-rt.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/uiDesigner/lib/jps/java-guiForms-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/maven/lib/maven-jps.jar;D:/idea/IntelliJ IDEA Community Edition 2024.2.3/plugins/gradle-java/lib/gradle-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 54432 39f02459-34c0-4334-8950-bb69641599d2 C:/Users/光年之外/AppData/Local/JetBrains/IdeaIC2024.2/compile-server Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized option: --add-opens
最新发布
09-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值