这里说下最近修改nutch的源码碰到的调用cpp文件中的方法。
刚刚开始的时候,想直接在fetch.java中直接写jni接口。后来发现这样会留下不好的编程习惯。自己动手在fetch下写一个类。Hello.java。。。接下来就是要耍出大绝招了。。。
命令:
javac Hello.java
cd apache-nutch-1.7/build/classes #nutch编译完的class放在这个文件夹下
javah org.apache.nutch.fetcher.Hello #这边注意一下,这个Hello类要带上包名,今天就是跪在这边一个下午。。。
这时候你会兴奋的发现在classes文件下生成久等不来的....Hello.h文件了。。。重点还是在执行javah的过程。
接下来就时编译生成.so文件了。。。
命令:
cd apache-nutch-1.7/build/classes/org/apache/nutch/fetcher
gcc -shared -I /usr/local/java/jdk1.7.0_25/include -I /usr/local/java/jdk1.7.0_25/include/linux ***.cpp -o libHello.so #***.cpp就是你要调用的cpp
生成了libHello.so有木有~~~有木有~激动不?!
供学习JNI的参考,有出错的地方还望指出~不吝指教哦~
分享到:
相关推荐
通过本文,我们可以了解 Java 和 C++ 之间的互相调用实例的实现过程,包括 C++ DLL 文件的创建和使用,以及 Java 代码中使用 JNI 技术调用 C++ DLL 文件的实现细节。这种技术可以应用于需要 Java 和 C++ 之间互相...
在这个过程中,关键点包括正确地处理JNI数据类型,如 `jobject`、`JNIEnv *` 和 `jmethodID`,以及在C++中调用Java方法。JNI提供了一套API来实现这些功能,例如 `CallVoidMethod()`、`FindClass()` 和 `GetMethodID...
### Java JNI调用动态库(Linux、Windows)的实现步骤 #### 一、概述 Java Native Interface (JNI) 是一种标准的 Java 接口,它允许 Java 代码和其他语言(如 C 或 C++)编写的代码进行交互。通过 JNI,Java 应用...
在这个"Java jni调用c实例"中,我们将深入探讨如何通过JNI在Java应用程序中调用C语言编写的函数。 首先,我们需要了解JNI的基本结构。一个典型的JNI程序包括Java源代码、C/C++源代码以及对应的头文件。Java源代码中...
Java程序可以通过JNI调用本地方法,这些本地方法是用其他语言编写的,并通过JNI接口暴露给Java。这个过程涉及到以下几个步骤: 1. **创建本地方法声明**:在Java类中,你需要声明本地方法。这些方法没有具体实现,...
Android 通过 JNI(Java Native Interface)调用.so 动态库是 Android 开发中的一种常用技术。JNI 是一种允许 Java 代码与 native 代码之间进行交互的接口。通过 JNI,我们可以在 Android 项目中调用.so 动态库中的 ...
总结来说,Delphi 10.3通过JNI调用Java函数的过程涉及以下步骤: 1. 创建C++ DLL项目,引入JNI头文件。 2. 定义JNI函数,实现Delphi和Java之间的交互逻辑。 3. 在Delphi程序中加载DLL,获取JNI函数的指针。 4. 使用...
JNI实现java cpp相互调用,包括动态注册和静态注册两种方式,具体包含 静态方式实现: C/C++中访问Java方法 C/C++中访问Java父类的方法 C/C++中访问/修改Java变量 Java中访问C/C++方法 Java中访问/修改C/C++变量 ...
Android JNI(Java Native Interface)是Android系统提供的一种机制,它允许Java代码调用C/C++原生代码,同时也允许C/C++代码调用Java的方法。JNI在开发高性能、低级硬件交互、使用现有C库或者优化性能的关键部分时...
在本主题中,我们将深入探讨如何使用C++通过JNI来调用Java中的方法,以及如何实现C++与JavaScript的互调。这在跨平台开发、性能优化或利用现有C/C++库时尤其有用。 首先,我们需要理解JNI的基本结构。JNI接口定义了...
总结来说,这个实例展示了Java通过JNI调用C++本地方法的基本流程,包括Java端的声明、JNI头文件的生成、C++的实现、动态链接库的编译以及最终的调用。虽然这个实例没有涉及复杂的类型转换,但在实际应用中,根据数据...
通过JNI调用第三方动态库在Android开发中是常见操作,涉及到的知识点包括Java本地方法声明、JNI接口定义、Makefile编写以及NDK编译。在实际操作过程中,务必注意代码的正确性,因为一个小错误都可能导致编译失败或...
在本主题中,我们将深入探讨如何在Windows和Linux环境中利用JNI来生成动态链接库(DLL for Windows,SO for Linux),并使Java能够调用C++编写的函数。 1. **Java调用C++的基本原理** - JNI为Java应用程序提供了一...
总结起来,JNI调用C++代码的过程包括:在Java中声明本地方法、生成JNI头文件、编写C++实现、编译C++代码为动态链接库,以及在Java程序中加载和调用本地方法。这种方式在处理底层操作、高性能计算或者与硬件设备交互...
理解JNI的工作原理,掌握如何声明和实现native方法,以及如何在本地代码中调用Java方法,对于进行系统级编程和优化Java应用至关重要。在实际开发中,开发者应根据需求选择合适的方法,合理利用JNI,以提高程序的性能...
在本文中,我们将深入探讨如何在Visual Studio 2019环境下使用C++通过Java Native Interface (JNI)来调用Java代码。JNI是Java平台的一部分,它为Java应用程序提供了与本地代码交互的能力,使得开发者可以将Java应用...
通过运行这个实例,我们可以学习到如何设置JNI环境,如何在Java中声明本地方法,如何在C/C++中实现这些方法,以及如何在Java程序中调用本地方法。这个过程对于理解和掌握JNI非常重要,因为它是Java与C/C++等其他语言...
总结起来,Android中的JNI调用允许开发者使用C/C++进行文件操作,提供更高的效率和灵活性。通过声明native方法、编写C/C++代码、配置构建系统以及处理权限,开发者可以充分利用JNI进行复杂或性能敏感的文件操作。...
通过以上步骤,我们可以实现C++通过JNI调用Java类的功能。这个过程涉及到了Java和C++的混合编程,需要对两种语言有深入的理解,并且熟悉JNI提供的接口。在实际应用中,开发者还需要考虑多线程、内存管理、错误处理等...
JNI提供了一套接口,让Java虚拟机(JVM)能够调用本地方法,这些方法由C或C++编写,并编译成动态链接库(如Windows下的.dll或Linux下的.so文件)。JNI框架包括了Java端的本地方法声明和本地方法实现,以及C/C++端的...