Eclipse下建立简单JNI程序实现返回double类型
在Eclipse下生成时要注意,由于通常是在package里面添加类,而非像单独建立工程时独立添加,所以,在编译的时候,都需要进入包所在的文件夹, javac 包名.类名 这样的形式来编译,同理,javah命令也一样
首先建立两个java文件:
GetPara.java:
package com.niiam;
public class GetPara {
public native double getparameter();
}
这里建立了一个类,在类中定义了一个本地实现的方法getparameter(),该方法没有传入参数,传出一个固定的double类型数据,后面将由C++语言实现
建立一个Test.java进行测试:
package com.niiam;
public class Test {
public static void main(String[] args) {
System.loadLibrary("getpara");
GetPara para=new GetPara();
System.out.println("the height is:" + para.getparameter());
}
}
注意!!!
这里是在main方法中引入后面我们即将生成的getpara.dll链接库
也可以将该语句放在GetPara这个类里面,并用static{}进行修饰,这样,在每次实例化这个类时,都相当于实现了引入库操作。
在跟SpringBoot项目结合时要用第二种方式,切记!
进入com.niiam包所在的文件夹
javac com.niiam.GetPara.java
javac com.niiam.Test.java进行编译
javah com.niiam.GetPara.java生成.h文件com_niiam_GetPara.h
注意,这里的.h文件是包含包名的,其内部的函数声明:
JNIEXPORT jdouble JNICALL Java_com_niiam_GetPara_getparameter
(JNIEnv *, jobject);
也是有包名存在的,与手动建立工程项目的情况不同,生成的dll文件也不同,不可等同
在vs中建立console项目,输出设置为dll
引入头文件,将jni.h jni_md.h所在目录都引入包含目录
建立getpara.cpp文件
#include "com_niiam_GetPara.h" JNIEXPORT jdouble JNICALL Java_com_niiam_GetPara_getparameter
(JNIEnv *, jobject)
{
double a = 104.06;
return a;
}
编译生成dll文件
注意由于java platform是x64的平台,因此这里生成的dll文件也必须是x64的

生成的dll文件放在哪里,这里有几种选择:
1、放到磁盘制定目录,将该目录添加进环境变量path中,这样,运行时即可引入。这种方式同时适合于在Eclipse中运行,以及在控制台运行java com.niiam.GetPara
2、放到项目目录中去,并将项目目录添加进java build Path中,如图:
或者是:

经测试,放到这两个地方都可以
这样直接在Eclipse中可直接运行
Eclipse下建立简单JNI程序实现返回double类型的更多相关文章
- eclipse下开发简单的Web Service
service部分 在eclipse下新建一个动态web项目 在项目中新建一个service类 编写SayHello类的代码 package org.sunny.service; //包不要引用错了 ...
- Linux环境下运行简单java程序
一.安装java 1.下载jdk8 登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...
- Eclipse下使用Maven建立简单Springboot程序
1.创建Maven工程 2.编写pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- Eclipse下建立geoserver源码工程
摘要:本文详细阐述,如何基于geoserver源码构建eclipse工程文件,操作过程中除用到jdk.eclipse以外,还有git和maven,操作系统为windows8. 1安装Git 从(htt ...
- Eclipse下创建简单Servlet
参考文章:一个简单的Servlet程序 http://blog.csdn.net/a153375250/article/details/50916428 Servlet简介 Servlet是什么?简 ...
- eclipse下建立 android 项目,相关文件夹介绍
今天开始进入ANDROID开发,之前一直做些JAVA的WEBSERVICE之类的文件,第一次从头开始整理ANDROID项目,我会把最近遇到的问题做一一梳理. 现在来说一下建立ANDROID项目后产生的 ...
- windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行
1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...
- nginx下运行php的程序时返回200访问却是空白页问题的解决方法
由于nginx与php-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白. ...
- Ubuntu下编译Android JNI最靠谱的方法...
网上资料太杂乱,搞了大半天都还是没搞懂怎么系统的调用NDK.最后干脆放弃了Win改用Ubuntu编译JNI,虽然编译环境简单了,但是资料却少了不少.几乎没有一篇完整的文章.我想或许是能在Ubuntu下 ...
随机推荐
- access variables from the global scope 在全局范围内访问变量的2种方法
w http://php.net/manual/zh/language.variables.scope.php http://php.net/manual/en/language.variables. ...
- app返回之前app焦点的操作方法
var hdWin,hdfocus: THandle; trdID: Cardinal; //获取前置app窗口句柄 hdWin := GetForegroundWindow;//FindWindow ...
- Tornado实战
抽屉之Tornado实战(1)--分析与架构 抽屉之Tornado实战(2)--数据库表设计 抽屉之Tornado实战(3)--注册 抽屉之Tornado实战(4)--发帖及上传图片 抽屉之Torna ...
- slurm使用
官方文档:https://slurm.schedmd.com/ 用户命令cheatsheet:https://slurm.schedmd.com/pdfs/summary.pdf 占用GPU sall ...
- pycharm调试scrapy
pycharm调试scrapy 创建一个run.py文件作为调试入口 run.py中,name是要调试的爬虫的名字(注意,是爬虫类中的name,而不是爬虫类所在文件的名字) 拼接爬虫运行的命令,然后用 ...
- 我的Android进阶之旅------>Android Studio 快捷键整理分享
正式转战Android Studio了,首先把Android Studio的快捷键摘录下来,以备后用. (官网的快捷键列表如下 https://developer.android.com/studi ...
- Keras之函数式(Functional)模型
函数式(Functional)模型 我们起初将Functional一词译作泛型,想要表达该类模型能够表达任意张量映射的含义,但表达的不是很精确,在Keras2里我们将这个词改移为“函数式”,函数式模型 ...
- python 2.7.11安装pywin32过程中 停止工作问题
问题描述 由于需要安装pywin32,官网下载了pywin32-220.win32-py2.7.exe.注意:你的pywin32是32位还是64位取决于你的python,而不是你的电脑.CMD上可以查 ...
- 学会这些你就是Android 开发高手了!
世界范围内,很多移动设备都是Android系统,Android开发可以说很有前景.对于安卓开发者来说,如果有个地方可以找到Android开发所有的资料,不需要一个网站一个网站的搜索,简直是件很开心的事 ...
- Spring.Net依赖注入(属性注入)
一.前言: Spring.Net是Java开源框架迁移过来的,主要分为 1)依赖注入 2)面向方面编程 3)数据访问抽象 4)Asp.Net扩展 四个模块功能,这里只是简单介绍依赖注入模块功能. 对于 ...