返回首页

{A}介绍
JNI的Java本地接口是一组在Java平台中提供的功能。应用程序使用JNI编写的代码可以将Java代码在其他语言如C,Delphi和C#中。
在我的例子中,我会告诉你如何从一个C#客户端调用Java方法的情侣。优势
您可以重用现有的图书馆/从您的新C#编写的应用程序,以前用Java编写的类。这意味着,你不必放弃你的遗留代码用Java编写的,并再次重塑在C#中的车轮。背景
是熟悉JNI中最重要的事情之一是段描述符。正如你会发现当我调用一个Java方法,该方法在测试工具,我传递一个字符串参数,在quot; Ljava /郎/字符串; quot;这代表了Java编程语言中的字段类型。例如,如果你想代表一个int字段,那么你会使用quot; Iquot;,浮法领域将是quot; Fquot,和一个布尔字段将quot; Zquot;等。
下表介绍了在Java编程语言和相应的类型中的JNI的原始类型。所有领域的描述,开始与L处理的对象(注:作为一个对象传递一个字符串),必须由quot终止的;;"字符。总是一个数组类型前缀与quot; [quot;字符。 JNI的现场描述符Java语言类型 ž布尔乙字节Ç字符小号短我INT J长F浮动ð翻番ljava /郎/字符串;串[Ljava /郎/对象;对象[]
方法描述使用领域的描述,描述了一个Java方法的结构。有方法描述符中的字段描述之间没有空格。
除了void返回类型是由V表示,所有其他的返回类型使用领域描述。下表介绍了Java方法声明和相应的JNI描述。从C#的Java通过JNI方法调用时使用JNI方法描述。Java方法声明JNI方法描述 字符串的foo();quot;()Ljava /郎/字符串; quot; 无效酒吧(INT,BOOL二);(工业区)第五 使用代码从。NET GUI应用程序调用Java代码的一个例子
一旦引用被设置在我的代码下载部分位于JNI的大会,你就可以开始只有几行代码中调用Java方法。
需要做的第一件事是创建一个字典对象将包含所有的参数传递给Java虚拟机。在下面的例子,我做的设置类路径,将告诉JVM在哪里寻找类和包的最低。

private Dictionary<string, string> jvmParameters = new Dictionary<string, string>();

jvmParameters.Add("-Djava.class.path", Location of the java class);

一旦JVM参数已分配到字典对象,可以创建一个JavaNativeInterface实例。一旦建立,该方法LoadJVM被称为JVM参数,需要将加载Java虚拟机。一旦加载,用户调用的方法实例Java对象(注意,的方法InstantiateJavaObject的使用是可选的,用户可能只是想调用一个静态方法,在这种情况下,这种方法不需要被称为然而,它不会造成任何损害的情况下)。{C}
一旦JVM已经加载一个类的实例,用户可以调用任何方法,他们希望。首先创建一个对象将包含所有参数的列表传递到Java方法。因为它是一个对象列表,它可以容纳不同类型的参数作为一切从对象继承。
List<object> olParameters = new List<object>();

olParameters.Add(Value of the parameter to be passed to the java method);

接下来,只需调用传递的Java方法的返回类型的通用方法CallMethod的模板类型。在下面的例子中,我调用CallMethodlt; stringgt;这意味着,我想打电话给我的Java方法的返回类型是一个字符串。
下,传递的Java方法调用的名称和方法的描述(见上文);最后,通过在所有参数列表。 (注:如果没有参数是必需的,然后传递一个空的列表。){体C3}
好了,我想这都结束了,但记得有得多,你可以用JNI。测试应用程序只是一个快速和肮脏的方式展示JNI组件的基础知识。对于JNI的充分理解,我建议你读这本书的:{A2的}。

回答

评论会员: 时间:2
Z