这几天研究了下 JAVA调用C ,在不懂C的情况下研究这个实在让人郁闷,还好总算搞出来了。
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。
下面来说说如何实现 JAVA调用C
首先来说JAVA部分
JAVA 部分
1、 加载动态库(dll文件 )
static {
System.loadLibrary(“dll库文件”);
}
2、 调用的方法做本地声明,关键字为native 方法不用实现 由C实现
public native void displayHelloWorld();
3、 执行javac HelloWorld.java (以下java类的命名都以HelloWorld命名)
4、 执行javah –classpath . HelloWorld 生成 “.h”文件. 把这个“.h”文件交给C实现。
C方面操作
用vc++做为编译器具体操作如下:
1、 创建项目—>win32 项目—>应用类型选择dll
2、 C类库不包括与java通信的库类,将JNI加载到C库类中 也就是 把JAVA jdk 包include文件夹的所有文件C 编译器 VC\include 下
3、 实现HelloWorld.h接口 生成 dll文件(生成的dll文件用replase下的 否则会产生java.lang.UnsatisfiedLinkError 或者乱码情况 )。
4、 把生成的dll文件拷贝到和class文件一个目录下 运用 java
注:提供可运行jnirun.bat 方便查看结果
分享到:
相关推荐
"Java调用本地方法详细指南" Java Native Interface(JNI)是Java开发中的一种技术,允许Java代码调用本地方法,从而与其他语言编写的应用程序和库进行交互。JNI是Java Development Kit(JDK)的组成部分,已经被...
在Java编程环境中,调用本地打印机是一项常见的任务,特别是在企业级应用中,如报表生成、文档打印等场景。本文将详细讲解如何利用Java API来实现这一功能,以及可能遇到的问题和解决方案。 首先,Java提供了`java....
- **Java调用本地方法**:通过`native`方法的实例方法调用本地代码。 - **本地代码调用Java方法**:通过JNIEnv指针,本地代码可以访问和调用Java对象的方法,访问Java数组,甚至创建新的Java对象。 6. **JNI数据...
Java程序语言虽然是一种非常...本文将重点探讨Java程序对本地方法的调用,从探讨Java调用本地方法的原因及意义入手,进而对其调用本地方法的几个步骤做了阐述,紧接着对几种常见的Java调用本地方法的方案进行分析和对比。
本文将详细介绍如何在Java中调用本地exe文件,并解析提供的代码示例。 ### 一、Java中调用本地exe文件的基本原理 #### 1.1 调用本地exe文件的方式 在Java中,可以通过`java.lang.Runtime`类或者`java.lang....
Java调用本地浏览器的示例,通常涉及到Java与操作系统交互的能力,这主要通过Java的`Runtime`类或者`ProcessBuilder`类实现。这两个类允许Java程序执行系统命令,例如打开一个本地已安装的浏览器来加载特定的URL。...
java调用本地dll的几种方法性能对比测试。 JNA消耗的总时间(ms):5406 bridj消耗的总时间(ms):984 JNI消耗的总时间(ms):47 包含c++源码和java源码,部署和使用方法。在win7和winxp下测试用过。 部分源码是...
Java通过JNI(Java Native Interface)调用... - 示例应用:演示如何从Java调用本地方法的示例程序。 通过理解并实践这个项目,你可以深入掌握Java通过JNI调用C语言函数库的方法,为开发混合型Java应用打下坚实基础。
- 使用JNI头文件生成对应的Java本地接口(JNI)代码,这些代码包含了Java调用本地方法的接口定义。 - 编译C/C++代码生成动态库(如.dll文件)。 - 在Java代码中,声明native方法并使用`System.loadLibrary`加载...
要实现Java调用本地的远程桌面连接,通常会使用`Runtime.getRuntime().exec()`方法来执行系统命令。这个方法允许我们在Java程序中执行任何可执行文件或命令行脚本。例如,我们可以构造一个包含用户名、密码和目标...
该接口继承自`Library`类,这表明它是通过Java调用本地方法的一种方式。接口中声明了一系列的函数,每个函数对应打印机的一个操作,如打开端口、发送命令、打印条码、下载图片等。 2. **调用本地DLL库**:文档使用...
JNI允许Java代码调用本地方法,并且使Java方法能够被本地应用调用。下面详细讨论Java调用C++本地方法的步骤和相关知识点。 1.了解JNI架构和组件 JNI是一套规范,允许Java虚拟机(JVM)与本地应用程序和库进行交互。...
通过JNI,开发者可以编写本地方法并将其链接到Java应用中。这种方式灵活性高,但同时也意味着需要额外的工作量来编写和管理本地代码。 #### JAWINJNative JAWINJNative是一种简化了JNI使用的工具,它允许直接调用...
5. **Java调用本地方法**:现在,Java代码可以通过实例化Java对象并调用native方法来执行本地代码。 三、JNI关键概念 1. **JNIEnv指针**:每个本地方法都有一个JNIEnv指针作为第一个参数,它是JNI函数的入口点,...
标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...
这个压缩包的源码可能会包含各种示例,例如如何从Java调用本地方法,如何传递参数,以及如何处理返回值等。通过学习和实践这些示例,开发者可以更深入地理解JNI的工作原理,并能熟练地在Java项目中集成本地代码。
本案例将详细讲解如何在Java中通过本地方法调用C语言实现的功能,具体以一个调用系统时间的简单例子进行说明。 首先,我们来看`TimeShow.java`这个Java类,它通常包含了一个native方法声明,例如: ```java public...
JNI(Java Native Interface)就是为了弥补这一不足,它允许Java代码调用本地方法,这些方法通常以库文件的形式存在,如Windows上的DLL(Dynamic Link Library)或UNIX上的SO(Shared Object)文件。通过JNI,Java...