eclipse和NetBeans环境下运行JNA操作备忘
2015-08-06 15:34
513 查看
1,eclipse下操作
转自 点击打开链接
1. 下载jna.jar
到JNA官网下载最新版本的“jna.jar”,当前的最新版是4.1.0(to 2015.08)。链接如下:
https://github.com/twall/jna
2. 安装jna.jar
将jna.jar文件移动到JKD的安装目录的子目录,我的是:/opt/java/jdk1.7.0/lib。这个jna.jar文件也可以放在任何目录,比如你正在开发的Java工程目录。
3. 创建eclipse-java工程
启动eclipse,并新建一个Java工程JnaTest。
4. 添加Java源文件
在JnaTest工程中添加Java源文件HelloJna.java,并在源文件中输入如下代码:
package myjava.jna.test;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class HelloJna
{
//定义接口CLibrary,继承自com.sun.jna.Library
public interface CLibrary extends Library
{
//定义并初始化接口的静态变量
CLibrary Instance=(CLibrary)Native.loadLibrary((Platform.isWindows()?"msvcrt":"c"),CLibrary.class);
//printf函数声明
void printf(String format, Object... args);
}
public static void main(String[] args)
{
//调用printf打印信息
CLibrary.Instance.printf("Hello, JNA!\n");
}
}
提示:上述代码主要是参考JNA官网的例程。
5. 配置工程引用jna.jar库
5.1 在eclipse左边的Workspace项目管理器中右击项目JnaTest,选择属性“Properties”,如图5-1所示。
![](http://img9.ph.126.net/7e6WmHn-HXEjl8ZUoPCa2g==/2646146256074337929.jpg)
图5-1:配置项目属性
5.2 点击“Properties”后,在弹出的“Properties for JnaTest”对话框中点击左边的“Java Build Path”,然后再点击对话框中间的“Libraries”选项卡,最后点击右边的“Add External JARs...”按钮,如图5-2所示。
![](http://img8.ph.126.net/UFDyLVZFs2aXoyOk87a0pg==/186054959623204578.jpg)
图5-2:为工程添加扩展的JAR文件
5.3 在弹出的“JAR Selection”对话框中找到第2步安装的jna.jar文件,点击“确定”按钮,如图5-3所示。
![](http://img1.ph.126.net/Ctwoid3NNqJeg8_avvnB3g==/2748321672620308991.jpg)
图5-3:选择jna.jar文件
6. 编译并运行程序
运行结果如图6-1所示。
![](http://img2.ph.126.net/nOF7l7dv4GAHTHix4haeUw==/1012746966222398982.jpg)
图6-1:程序运行结果
7. JNA编程基本语法解析
7.1 自定义一个接口,该接口继承(扩展)自com.sun.jna.Library接口,如上面示例代码中的CLibrary接口。
7.2 在自定义的接口中声明将要调用的函数原型,这些函数原型必须要在即将加载的动态库中有对应的实例。如上面示例代码中的printf函数声明。如果是在微软的Windows环境下,该函数存放在msvcrt.dll动态库中;如果是在Linux环境下,该函数存放在libc.so动态库中。
7.3 在调用函数之前,先将接口实例化,并调用Native.loadLibrary对接口的实例初始化。如上面示例代码中的Instance实例初始化。
7.4 在上面的操作都正常完成后,即可在有需要的地方调用对应的C/C++函数。
2,NetBeans下操作
注:maven下操作和一般的工程区别在于jna的添加方式不一样,一般工程点项目右键,库添加jar包选jna。maven下为:
1.依赖关系上右键 添加依赖,搜索输入jna,从仓库中选择一个添加
![](http://img.blog.csdn.net/20150806154832248?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 将DLL文件拷贝到工程根目录。
3.新建com.sun.jna包,新建调用类进行测试
![](http://img.blog.csdn.net/20150806155150894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
调用代码主要是建立接口,然后调用函数。可参考以下内容:
1.JNI的替代者—使用JNA访问Java外部功能接口
2.JNA—JNI终结者
3.C++DLL编程详解
转自 点击打开链接
1. 下载jna.jar
到JNA官网下载最新版本的“jna.jar”,当前的最新版是4.1.0(to 2015.08)。链接如下:
https://github.com/twall/jna
2. 安装jna.jar
将jna.jar文件移动到JKD的安装目录的子目录,我的是:/opt/java/jdk1.7.0/lib。这个jna.jar文件也可以放在任何目录,比如你正在开发的Java工程目录。
3. 创建eclipse-java工程
启动eclipse,并新建一个Java工程JnaTest。
4. 添加Java源文件
在JnaTest工程中添加Java源文件HelloJna.java,并在源文件中输入如下代码:
package myjava.jna.test;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class HelloJna
{
//定义接口CLibrary,继承自com.sun.jna.Library
public interface CLibrary extends Library
{
//定义并初始化接口的静态变量
CLibrary Instance=(CLibrary)Native.loadLibrary((Platform.isWindows()?"msvcrt":"c"),CLibrary.class);
//printf函数声明
void printf(String format, Object... args);
}
public static void main(String[] args)
{
//调用printf打印信息
CLibrary.Instance.printf("Hello, JNA!\n");
}
}
提示:上述代码主要是参考JNA官网的例程。
5. 配置工程引用jna.jar库
5.1 在eclipse左边的Workspace项目管理器中右击项目JnaTest,选择属性“Properties”,如图5-1所示。
![](http://img9.ph.126.net/7e6WmHn-HXEjl8ZUoPCa2g==/2646146256074337929.jpg)
图5-1:配置项目属性
5.2 点击“Properties”后,在弹出的“Properties for JnaTest”对话框中点击左边的“Java Build Path”,然后再点击对话框中间的“Libraries”选项卡,最后点击右边的“Add External JARs...”按钮,如图5-2所示。
![](http://img8.ph.126.net/UFDyLVZFs2aXoyOk87a0pg==/186054959623204578.jpg)
图5-2:为工程添加扩展的JAR文件
5.3 在弹出的“JAR Selection”对话框中找到第2步安装的jna.jar文件,点击“确定”按钮,如图5-3所示。
![](http://img1.ph.126.net/Ctwoid3NNqJeg8_avvnB3g==/2748321672620308991.jpg)
图5-3:选择jna.jar文件
6. 编译并运行程序
运行结果如图6-1所示。
![](http://img2.ph.126.net/nOF7l7dv4GAHTHix4haeUw==/1012746966222398982.jpg)
图6-1:程序运行结果
7. JNA编程基本语法解析
7.1 自定义一个接口,该接口继承(扩展)自com.sun.jna.Library接口,如上面示例代码中的CLibrary接口。
7.2 在自定义的接口中声明将要调用的函数原型,这些函数原型必须要在即将加载的动态库中有对应的实例。如上面示例代码中的printf函数声明。如果是在微软的Windows环境下,该函数存放在msvcrt.dll动态库中;如果是在Linux环境下,该函数存放在libc.so动态库中。
7.3 在调用函数之前,先将接口实例化,并调用Native.loadLibrary对接口的实例初始化。如上面示例代码中的Instance实例初始化。
7.4 在上面的操作都正常完成后,即可在有需要的地方调用对应的C/C++函数。
2,NetBeans下操作
注:maven下操作和一般的工程区别在于jna的添加方式不一样,一般工程点项目右键,库添加jar包选jna。maven下为:
1.依赖关系上右键 添加依赖,搜索输入jna,从仓库中选择一个添加
2. 将DLL文件拷贝到工程根目录。
3.新建com.sun.jna包,新建调用类进行测试
调用代码主要是建立接口,然后调用函数。可参考以下内容:
1.JNI的替代者—使用JNA访问Java外部功能接口
2.JNA—JNI终结者
3.C++DLL编程详解
相关文章推荐
- 【Hades】ades是一个开源库,基于JPA和Spring构建,通过减少开发工作量显著的改进了数据访问层的实现
- 对于多线程两种方式的理解
- Java学习笔记-------使用DataOutputStream 、DataInputStream 组合实现C/S通信 :实例
- Java可变参数个数方法
- MyEclipse中使用JUnit进行单元测试
- java String s = null; & String s="";
- 记录Java学习过程之坦克大战1
- Spring.Net学习笔记九(自定义对象行为)
- StringTokenizer
- 图解Spring框架的设计理念与设计模式
- Eclipse 4.5.0 离线安装 Veloeclipse 插件
- 【hibernate】spring+ jpa + hibername 配置过程遇到的问题
- Java笔试题及答案
- Java 连接数据库的JDBC
- java泛型
- Java中实现用户点击关闭窗口按钮后提示用户,选择“是”后退到父窗口,选择“否”留在原窗口
- JAVA学习篇--Java类加载
- java中Collections.sort的用法
- Spring.Net学习笔记八(方法的注入)
- java多线程关键字_volatile