Intelli IDEA java调用DLL库 您所在的位置:网站首页 idea打开指定文件 Intelli IDEA java调用DLL库

Intelli IDEA java调用DLL库

2023-12-16 20:05| 来源: 网络整理| 查看: 265

Intelli IDEA java调用DLL库

本文介绍如何使用java调用windows的dll库。

创建java工程 在这里插入图片描述在工程根目录下创建libs文件夹,用来存放jar、dll库。 打开module设置,将libs文件夹设置成资源库。 在这里插入图片描述 在这里插入图片描述在jar包上点击右键,添加library 在这里插入图片描述编写测试main函数,运行报错:java.lang.UnsatisfiedLinkError: no safekey in java.library.path。 在这里插入图片描述打开编译器编辑,设置加载dll库路径: Edit Configurations–>Configurations–>VM options -Djava.library.path=E:\Project\IDEAWorkspace\Test\libs 在这里插入图片描述 在这里插入图片描述运行结果: 在这里插入图片描述

因为一开始总是报错找不到dll库,不知道问题出在哪。如果不知道加载路径,可使用该方法获取当前程序加载库的路径:

System.out.println("当前dll加载路径:"+System.getProperty("java.library.path"));

当前dll加载路径:E:\Project\IDEAWorkspace\Test\libs

小功能:判断当前系统及架构,可用在jar包中,判断加载so还是dll。

//系统 Windows 或者 Linux String osName = System.getProperties().getProperty("os.name").toLowerCase(); //架构 x86 或者 amd64 String osArch = System.getProperties().getProperty("os.arch").toLowerCase(); System.out.println("This OS is: " + osName + ";" + osArch); String fileName = null; if (osArch.indexOf("64") != -1) {//64位 if (osName.indexOf("win") != -1) { fileName = "test_64.dll"; } else { fileName = "test_64.so"; } System.out.println(System.getProperty("user.dir") + File.separator + fileName); } else if (osArch.indexOf("86") != -1) {//32位 if (osName.indexOf("win") != -1) { fileName = "test_32.dll"; } else { fileName = "test_32.so"; } System.out.println(System.getProperty("user.dir") + File.separator + fileName); } else {//不支持的 System.out.println("This OS is not support!"); }

特别注意: 1.如果dll中引用了,其他dll,注意加载顺序,两个dll文件都需要添加到工程中,并使用System.loadLibrary()加载。 2.dll库使用Release版本64位的,要与jdk位数一致。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有