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下 ...
随机推荐
- python中matplotlib绘图封装类之折线图、条状图、圆饼图
DrawHelper.py封装类源码: import matplotlib import matplotlib.pyplot as plt import numpy as np class DrawH ...
- MySQL主从不一致修复
场景: 线上正在服务的库由于紧急主从切换导致主从不一致,报错信息如下: Last_Error: Coordinator stopped because there were error(s) in t ...
- Powershell About Active Directory Server
一.获取域控制器服务器清单 (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ } | select hos ...
- Es 中一个分片一般设置多大
百度Elasticsearch-产品描述-介绍-百度云 https://cloud.baidu.com/doc/BES/FAQ.html#.2C.BB.93.08.C9.7E.2F.A3.E7.35. ...
- 转!!springmvc学习
springmvc学习 https://www.cnblogs.com/baiduligang/p/4247164.html
- JavaScript整理1
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- CentOS7.1 KVM虚拟化之linux虚拟机安装(2)
一.上传ISO文件到/data/iso下 这里使用CentOS-5.5-i386-bin-DVD.iso 二.安装CentOS5.5 CentOS7.1 安装KVM虚拟机默认磁盘格式为qcow2(推荐 ...
- 学点TCPDUMP
[root@future ~]# yum install tcpdump 官网地址: https://nmap.org/ 还有中文手册,太感动了 https://nmap.org/man/zh/man ...
- C#检测两个文件内容是否相同
不知道为什么对Excel 2010 xlsx后缀的文件没有效果,求解! 对其他文件有效,如.txt,.csv using System; using System.Security.Cryptogra ...
- Python函数之初体验
定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们先定义一个求字符串长度的函数 ...