TestJNI.java

1 public classTestJNI {2

3 static{4 System.load("/home/buyizhiyou/workspace/JNI/src/libTestJNI.so");//注意此处加载.so文件5 }6 public nativeString test(String inp);//此处需要声明7

8 public static voidmain(String[] args){9 TestJNI j=newTestJNI();10 String ret=j.test("inputs");11 System.out.println(ret);12 }13 }

javah -jni TestJNI 生成TestJNI.h,这个文件不用自己改,如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class TestJNI */

#ifndef _Included_TestJNI

#define _Included_TestJNI

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: TestJNI

* Method: test

* Signature: (Ljava/lang/String;)Ljava/lang/String;

*/

JNIEXPORT jstring JNICALL Java_TestJNI_test

(JNIEnv *, jobject, jstring);

#ifdef __cplusplus

}

#endif

#endif

然后用c++实现JNICALL Java_TestJNI_test方法,注意c++类型和JNI类型的转换:

#include "TestJNI.h"#include

using namespacestd;

JNIEXPORT jstring JNICALL Java_TestJNI_test(JNIEnv*env, jobject, jstring inp)

{char* s = (char*)env->GetStringUTFChars(inp, NULL);

cout<

jstring ret= env->NewStringUTF("return");returnret;

}

编译c++成.so文件,注意指定头文件路径,因为需要用到jni.h, jni_md.h:

g++ TestJNI.cpp -I/usr/lib/jvm/java-8-oracle/include/linux/ -I/usr/lib/jvm/java-8-oracle/include/ -fPIC -shared -o libTestJNI.so

然后javac TestJNI.java编译,java TestJNI执行即可。

ubuntu下c 调用java_ubuntu下使用JNI Java调用C++的例子相关推荐

  1. android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用

    第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...

  2. perl java远程调用函数调用_如何从Java调用Perl?

    Inline-Java是从Perl调用java的常用库,以及这个应该允许从Java调用Perl的post propose a org.perl.java模块. 但是,由于不同 JVM的JNI实现的不可 ...

  3. java 调用postgresql 函数_从Java调用PostgreSQL中的存储过程

    我编写了一个我想用Java调用的存储过程.但我不认为它能够对我通过的查询做任何事情.以下是我的java代码: String QUERY_LOCATION = "select (license ...

  4. android java调用_关于Android中Java调用外部命令的三种方式

    此所谓三种方式,只是个人认为.本人还是菜鸟初涉,所以有所错误,请指正. 个人认为,Java调用外部命令.无非三种情况: 一.是只执行命令,不考虑返回值. 二.是执行命令的同时,还需要得到返回值. 三. ...

  5. 麒麟系统java调用wps转pdf,急java调用WPS或pdfcreator的com接口实现doc转pdf解决方法

    急急急java调用WPS或pdfcreator的com接口实现doc转pdf 各位大虾:我想把word文件生成PDF,然后网上找了方法http://hacker507.iteye.com/blog/1 ...

  6. android jni java调用c_Android与JNI(一) ---- Java调用C 静态调用

    第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...

  7. java 调用 .net dll_c# – 如何从Java调用.NET dll

    我有这个代码来创建一个简单的.NET .dll.它只返回一个int. 但是,它不适用于Java. using System; using System.Collections.Generic; usi ...

  8. java调用oracle的函数,从Java调用Oracle函数

    我有以下功能规格: FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2, IN_parameter2 IN VA ...

  9. PHP调用kaldi,程序员罗杰-JAVA 调用PHP Webservices

    PHP webservices 接口 import java.util.List; import javax.xml.namespace.QName; import javax.xml.rpc.enc ...

最新文章

  1. php acl控制,用PHP怎么实现一个ACL系统?
  2. JavaScript学习 九、事件
  3. java 99乘法表对齐_Java实现九九乘法表的完整实例(对齐版)
  4. matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc
  5. 安徽工业大学计算机考研历年分数线,安徽工业大学历年考研分数线汇总[2012-2021]...
  6. 「1s」即可!用 VS Code 一键玩转 GitHub 代码!
  7. 查询数据表中重复记录
  8. ISO9000和CMM
  9. 银行卡号自动识别,包括银行名称、英文缩写代号、LOGO
  10. 【VB6】如何用纯VB代码写个五子棋程序?(一)
  11. Linux(CentOS)安装 Vim编辑器
  12. Chrome 管理搜索引擎
  13. 菜鸟晋级篇!一篇文章读懂看门狗定时器!
  14. int类型和String类型相互转换
  15. Linux格式化逻辑卷的命令,Linux LVM逻辑卷管理
  16. 【Paper】Neural Machine Translation by Jointly Learning to Align and Translate
  17. C++ 的算术、自增自减、位运算、关系与逻辑运算符(数据的操作)
  18. FTPC 在制品跟踪(WIP Tracking)对象
  19. 中兴服务器 bmc 登不上
  20. Linux多网卡多路由设置

热门文章

  1. 理解 static 关键字
  2. 机器学习基础(四)——持久化分类器
  3. Java 基础——日期(Date)的解析
  4. boost基础——variant的原理及基本用法
  5. Python机器学习——概念及其物理解释
  6. C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
  7. python自动化办公入门-[Python] 自动化办公 docx操作Word基础代码
  8. 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
  9. python软件下载安装百度网盘-Python自动化测试视频教程【百度云盘下载】
  10. python发音1001python发音-1001种玩法 | Python 学习指南资源