java调用dll方法总结

常用的就是jni,jnative(基于jni封装了自己的jar包) 注意:java调用dll,必须dll里做了对应的处理。列如:方法名必须为_java_包名_类名_方法名

使用JNI调用dll步骤

新建一个java项目,将dll文件放入src下

配置改项目环境jre下native目录,指向src

项目jdk一定不要用eclipse自带的,用自己安装的jdk路径

按照dll里的目录顺序新建目录及类

声明跟dll里一样的方法,方法前加native关键字(注意参数类型)

代码静态块里写(不要后缀):

static {
	System.loadLibrary("testDll");
}

之后写main方法就可以调用了。如有报错,注意观察报错信息,可能会缺少依赖dll文件

简单封装JNI

简单封装一个调用dll的类

代码可以在资源共享,我的代码中下载

调用代码(主要是static块代码变了),DllUtil这块代码在共享里下载

static {
	try {
		DllUtil.extractFromJar("testDll.dll", "testDll.dll", System
				.getProperty("java.io.tmpdir"));
		System.load(System.getProperty("java.io.tmpdir") + "\\testDll.dll");
		System.out.println("load testDll.dll success!!");
	} catch (Exception e) {
		System.out.println("testDll.dll error:" + e.getMessage());
	}
}

以上就是本次文章的全部内容,更多的内容大家可以在我们搜索,感谢你的支持。

(0)

相关推荐

  • JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO文件动态加载方法的文章. 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来实现一些JAVA不能实现的功能,或者是一些第三方dll插件.通常的做法是将这些dll文件复制到 %JAVA_HOME%\jre\bin\ 文件夹或者 应用中间件(Tomcat|Weblogic)的bin

  • java中调用GDAL DLL的实现方法

    步骤:1.编译GDAL(编译过程忽略).2.将编译过后的动态链接库拷贝到{JAVA_HOME}\jre\bin目录下,如下图:   3.将编译过后的gdal.jar引入java工程,测试调用,代码如下: 复制代码 代码如下: @Override    protected boolean doIsAvailable() throws Throwable {        System.loadLibrary("gdaljni");        return true;    } 上面代

  • Java调用.dll文件的方法

    下截JNative组件 jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2 解压JNative-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.3.2</st1:chsdate>.zip 获得三个文件,分别是:

  • java使用JNA(Java Native Access)调用dll的方法

    JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C.C++代码,尤其是底层库文件(windows中叫dll文件,linux下是so[shared object]文件).JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程.JNA提供了一个动态的C语言编写的转发器(实际上也是一个动态链接库,在Linux-i386中文件名是:libjnidispatch.so)可以自动实现Java与C之

  • Java如何调用C++ DLL库

    最近做了一个网页端人脸识别的项目,用c++写了人脸识别的算法,但是在网页端要使用java后台,这其中就涉及到了java调用dll的问题.下面是小编通过查阅相关资料,实现的一个简单例子. 1.第一步,先在Java中新建一个类 如上图,其中注意这句System.loadLibrary("javaCallcpp");,这就是加载dll文件的代码了.然后我们需要dll中实现下面定义的加减乘除方法. 2.编译文件,文件名为Java2cpp.java,首先编译成class文件,如果用的是eclip

  • Windows下java、javaw、javaws以及jvm.dll等进程的区别

    java  ,javaw   和  javaws 的区别: 首先,所有的这些都是java的启动装置,java.exe经常使用,当使用命令行输出到window的时候,会有java.exe进程,通过任务管理器可以看到.通常 我们执行一些小的java程序的时候会有 java.exe进程在运行.javaw.exe对于我们也比较特殊,我们也能够通过任务管理器看到javaw.exe进程的运行.javaws通常web开启的时候的进程. jvm.dll jvm.dll是一个java虚拟机在windows平台环境

  • 解析Java和Eclipse中加载本地库(.dll文件)的详细说明

    最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述.其次,Java中加载dll的方式

  • java使用jna调用c#中dll的方法详解

    前言 JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码.开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射. 优点 JNA可以让你像调用一般java方法一样直接调用本地方法.就和直接执行本地方法差不多,而且调用本地方法还不用额外的其他处理或者配置什么的,

  • java调用dll方法总结

    常用的就是jni,jnative(基于jni封装了自己的jar包) 注意:java调用dll,必须dll里做了对应的处理.列如:方法名必须为_java_包名_类名_方法名 使用JNI调用dll步骤 新建一个java项目,将dll文件放入src下 配置改项目环境jre下native目录,指向src 项目jdk一定不要用eclipse自带的,用自己安装的jdk路径 按照dll里的目录顺序新建目录及类 声明跟dll里一样的方法,方法前加native关键字(注意参数类型) 代码静态块里写(不要后缀):

  • 解决java调用dll报Unable to load library错误的问题

    如下: 1.确保路径下有该dll文件 2.dll和jdk必须确保同样是64位或者32位. 3.地址url中不能出现"/",必须是"\". 4.路径一定要对. 5.如果有同样的文件名出现,要在路径后面加上 ".dll",比如:System.getProperty("user.dir")+"\library"+"\PlayCtrl.dll" 补充知识:Java语言调用第三方dll文件的使用方

  • Java调用dll文件的实现解析

    目录 Java调用dll文件 环境 接下来进入正文 Java调用dll文件几种常见方式 Java调用动态库需要关注的问题 一.数据类型对应关系 二.Jnative调用dll 三.JNA调用dll Java调用dll文件 近期根据C++做了一个图片质量检测的项目,目前需要在在java中进行调用,所以先在C++上生成dll文件,然后基于java调用dll文件实现功能. 环境 C++:VS2017(之前配置opencv真是要了老命) java:idea2020+jdk1.8. 注意:jdk安装的时候小

  • 汇总java调用python方法

    本文为大家分享了java调用python方法,供大家参考,具体内容如下 一.在java类中直接执行python语句 import org.python.util.PythonInterpreter; public class FirstJavaScript { public static void main(String args[]) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.exec("day

  • Java调用setStroke()方法设置笔画属性的语法 原创

    默认情况下,Graphics 绘图类使用的笔画属性是粗细为1个像素的正方形,而Java2D的Graphics2D类可以调用setStroke()方法设置笔画的属性,如改变线条的粗细.虚实和定义线段端点的形状.风格等. 语法如下: setStroke(Stroke stroke) 其中,参数stroke是Stroke接口的实现类. setStroke()方法必须接受一个Stroke接口的实现类作参数,java.awt包中提供了BasicStroke 类,它实现了Stroke接口,并且通过不同的构造

  • android webview中使用Java调用JavaScript方法并获取返回值

    在android平板上用webview打开一个网页,调用里面的javascript方法,同时相互传参. 网上例子很少啊,基本都不能获取返回值,贴一个自己最后调试完的代码如下: Java: 复制代码 代码如下: protected void onCreate(Bundle savedInstanceState) { ........ x = (WebView)this.findViewById(R.id.webView_viewTable); x.setScrollBarStyle(View.SC

  • 总结Java调用Python程序方法

    如何使用Java调用Python程序 本文为大家介绍如何java调用python方法,供大家参考. 实际工程项目中可能会用到Java和python两种语言结合进行,这样就会涉及到一个问题,就是怎么用Java程序来调用已经写好的python脚本呢,一共有三种方法可以实现,具体方法分别为大家介绍: 1. 在java类中直接执行python语句 此方法需要引用org.python包,需要下载Jpython.在这里先介绍一下Jpython.下面引入百科的解释: Jython是一种完整的语言,而不是一个J

  • java调用相互依赖的dll的处理方法

    目录 一.问题描述 二.处理办法 2.1 类定义 2.2 调用 三.结语 一.问题描述 最近在做一个功能时遇到java需要调用dll,并且dll有依赖关系,之前都是单独调用一个,其实调用dll的都是模板代码,本身没有太高的难度,主要是相互依赖的还是第一次碰见,特此记录一下并分享给需要的朋友参考. 二.处理办法 其中A是dll方法的入口,A依赖B,C,D,E,F,G五个dll,先定义接口继承StdCallLibrary ,编写加载各个dll的模板代码,需要依赖的都全部加载进来,我这儿是A依赖了B,

随机推荐