C++调用JAVA方法详解

JNI允许运行在虚拟机的Java程序能够与其它语言(例如C和C++)编写的程序或者类库进行相互间的调用。同时JNI提供的一整套的API,允许将Java虚拟机直接嵌入到本地的应用程序中。

 

环境搭建

1、安装jdk及配置环境配置

2、配置vc++ 6.0



 


编写java代码:

package org.nickfover.jni;
public class Demo {
  public static int COUNT = 4;
  private String msg;
  private int[] counts;
  public Demo(){
	  this("缺省的构造方法");
  }
  public Demo(String s){
	  this.msg = s;
  }
  public String getMessage(){
	  return msg;
  }
  public static String getHelloworld(){
	  return "Hello world!!";
  }
  public String append(String str,int i){
	  return str + i;
  }
  public int[] getCounts(){
	 return counts;
  }
  public void setCounts(int[] counts)
  {
	  this.counts = counts;
  }
  public void throwExcp()throws IllegalAccessException
  {
	  throw new IllegalAccessException("execption occur.");
  }
}

 

编译(注:用eclipse编写的出现编译错误,我把复制出来粘贴在文档文件中,可能是编码的问题)
之后用javap命令查看(javap是jdk自带的反编译软件):

E:\ECLIPSEWORKPALCE\JNI\src\org\nickfover\jni>javac Demo.java

扫描二维码关注公众号,回复: 589824 查看本文章

E:\ECLIPSEWORKPALCE\JNI\src\org\nickfover\jni>javap -s -p Demo 

Warning: Binary file Demo contains org.nickfover.jni.Demo
Compiled from "Demo.java"
public class org.nickfover.jni.Demo {
  public static int COUNT;
    Signature: I     //这个是指对象在内存中的类型表示,在java模块的类加载哪章有见解
  private java.lang.String msg;
    Signature: Ljava/lang/String;
  private int[] counts;
    Signature: [I
  public org.nickfover.jni.Demo();
    Signature: ()V                     //()V表示void,括弧内表示参数
  public org.nickfover.jni.Demo(java.lang.String);
    Signature: (Ljava/lang/String;)V   //L表示String
  public java.lang.String getMessage();
    Signature: ()Ljava/lang/String;    //()L表示返回String型
  public static java.lang.String getHelloworld();
    Signature: ()Ljava/lang/String;
  public java.lang.String append(java.lang.String, int);
    Signature: (Ljava/lang/String;I)Ljava/lang/String;
  public int[] getCounts();
    Signature: ()[I
  public void setCounts(int[]);
    Signature: ([I)V
  public void throwExcp() throws java.lang.IllegalAccessException;
    Signature: ()V
  static {};
    Signature: ()V
}

 

 

 

 

参考:http://public0821.iteye.com/blog/423941

猜你喜欢

转载自nickfover.iteye.com/blog/2130587
今日推荐