JNI之HelloWorld

JNI是java native interface的缩写,JNI是一个标准编程接口,用于编写java本地方法并嵌入虚拟机至本地应用程序的。它的主要目的是为了在给定平台上通过所有java虚拟机的本地二进制方法实现的兼容性。

环境与工具

  • clion
  • idea
  • jdk8
  • MinGW

编写一个自己的native方法接口与实现

编写native方法

/**
 * @author 会灰翔的灰机
 * @date 2019/10/13
 */
public class MyNativeInterface {

    static {
        System.load("D:/git/private/test/test-impl/src/main/java/com/gallant/dispatch/mynative/hello.dll");
    }

    public native void helloWorld();

    public static void main(String[] args) {
        MyNativeInterface myNativeInterface = new MyNativeInterface();
        myNativeInterface.helloWorld();
    }

}

生成本地方法头文件

执行javah命令

javah -d ./com/gallant/dispatch/mynative/ -jni com.gallant.dispatch.mynative.MyNativeInterface

生成的头文件命名格式:com_gallant_dispatch_mynative_MyNativeInterface.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_gallant_dispatch_mynative_MyNativeInterface */

#ifndef _Included_com_gallant_dispatch_mynative_MyNativeInterface
#define _Included_com_gallant_dispatch_mynative_MyNativeInterface
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_gallant_dispatch_mynative_MyNativeInterface
 * Method:    helloWorld
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_gallant_dispatch_mynative_MyNativeInterface_helloWorld
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

编写c语言实现

博主使用clion ide开发的c语言,直接clion中创建一个项目

  1. 将javah生成的头文件com_gallant_dispatch_mynative_MyNativeInterface.h拷贝到项目下
  2. 如果头文件中#include <jni.h>飘红报错则改为#include “jni.h”
  3. {$JAVA_HOME}/include 目录下的jni.h以及{$JAVA_HOME}/include/win32 目录下的jni_md.h拷贝至当前目录。可以省略第二三步,编译c语言时可以直接指定JDK中这两个文件的绝对路径即可
  4. 创建c语言文件编写函数实现,如下面的代码中的方式实现,直接将头文件中生成的方法接口拷贝过来编写实现即可,注意需要增加一下参数名称,不然编译会报错
//
// Created by Gallant on 2019/10/13.
//
#include "jni.h"
#include <stdio.h>
#include "com_gallant_dispatch_mynative_MyNativeInterface.h"
// 注意下面的JNIEnvironment *以及就object默认生成的头文件中是没有参数名称的,编译时会报错,需要自己加上,如下env及obj
JNIEXPORT void JNICALL Java_com_gallant_dispatch_mynative_MyNativeInterface_helloWorld
        (JNIEnv * env, jobject obj)
{
    printf("Hello World From C++");
}
// -------------------------------报错
hello.c:8:10: error: parameter name omitted
         (JNIEnv *, jobject)
          ^~~~~~~~
hello.c:8:20: error: parameter name omitted
         (JNIEnv *, jobject)
                    ^~~~~~~

编译c语言

  1. terminal中使用命令行的方式编译c语言,命令在下面代码中
// 编译c语言
gcc hello.c com_gallant_dispatch_mynative_MyNativeInterface.h jni.h jni_md.h -fPIC -shared -o hello.dll
// 指定jni.h及jni_md.h绝对目录的方式编译
gcc -I "/cygdrive/d/Program Files/Java/jdk1.8.0_131/include" -I "/cygdrive/d/Program Files/Java/jdk1.8.0_131/include/win32" -o hello.dll
-shared hello.c

编译报错

jni_md.h:34:9: error: unknown type name '__int64'
 typedef __int64 jlong;
         ^~~~~~~

索性删除编译命令中的该头文件试试,果然可以。。。也就是说jni_md.h目前案例是不需要的

gcc hello.c com_gallant_dispatch_mynative_MyNativeInterface.h jni.h -fPIC -shared -o hello.dll

拷贝c编译的类库至java中load加载指定的目录

将编译好的实现拷贝至目标路径D:/git/private/test/test-impl/src/main/java/com/gallant/dispatch/mynative/hello.dll

执行java方法

本来以为已经可以顺利执行,结果事与愿违,执行报错如下

"D:\Program Files\Java\jdk1.8.0_131\bin\java.exe" -javaagent:D:\Applications\ideaIU-2018.1.3.win\lib\idea_rt.jar=62382:D:\Applications\ideaIU-2018.1.3.win\bin -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\git\private\test\test-impl\target\classes;D:\git\private\test\test-api\target\classes;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\commons\commons-collections4\4.1\commons-collections4-4.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\101tec\zkclient\0.4\zkclient-0.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\dubbo-integration\0.0.2-SNAPSHOT\dubbo-integration-0.0.2-20180420.072844-18.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\alibaba\dubbo\2.5.6.2-D-RELEASE\dubbo-2.5.6.2-D-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-aop\4.3.6.RELEASE\spring-aop-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-expression\4.3.6.RELEASE\spring-expression-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\io\netty\netty-all\4.0.35.Final\netty-all-4.0.35.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\javassist\javassist\3.21.0-GA\javassist-3.21.0-GA.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\route-client\1.1.7-RELEASE\route-client-1.1.7-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\tool-monitor-client\1.0.7-SNAPSHOT\tool-monitor-client-1.0.7-20190325.115924-4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\jezhumble\javasysmon\javasysmon\0.3.4\javasysmon-0.3.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-rt-management\2.7.11\cxf-rt-management-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-api\2.7.11\cxf-api-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\woodstox\woodstox-core-asl\4.2.1\woodstox-core-asl-4.2.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\ws\xmlschema\xmlschema-core\2.1.0\xmlschema-core-2.1.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\geronimo\specs\geronimo-javamail_1.4_spec\1.7.1\geronimo-javamail_1.4_spec-1.7.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\wsdl4j\wsdl4j\1.6.3\wsdl4j-1.6.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-rt-core\2.7.11\cxf-rt-core-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\sun\xml\bind\jaxb-impl\2.1.13\jaxb-impl-2.1.13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\fluent-hc\4.3.2\fluent-hc-4.3.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\httpclient\4.4.1\httpclient-4.4.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\httpcore\4.4.6\httpcore-4.4.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-codec\commons-codec\1.10\commons-codec-1.10.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\route-common\1.1.2-RELEASE\route-common-1.1.2-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\guava\guava\18.0\guava-18.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\checkerframework\checker-compat-qual\2.0.0\checker-compat-qual-2.0.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\errorprone\error_prone_annotations\2.1.3\error_prone_annotations-2.1.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\j2objc\j2objc-annotations\1.1\j2objc-annotations-1.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\mojo\animal-sniffer-annotations\1.14\animal-sniffer-annotations-1.14.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\groovy\groovy-all\2.4.7\groovy-all-2.4.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-web\4.3.6.RELEASE\spring-web-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\zookeeper\zookeeper\3.4.5\zookeeper-3.4.5.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\slf4j-log4j12\1.7.22\slf4j-log4j12-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\Applications\apache-maven-3.5.0\conf\repository\junit\junit\4.12\junit-4.12.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\monitor\monitor-client\2.2.5\monitor-client-2.2.5.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\alibaba\fastjson\1.2.24\fastjson-1.2.24.jar;D:\Applications\apache-maven-3.5.0\conf\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-context\4.3.6.RELEASE\spring-context-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-threadpool\0.0.1-SNAPSHOT\wireless-threadpool-0.0.1-20180627.062225-23.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\commons\commons-lang3\3.4\commons-lang3-3.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-treasure\0.0.1-SNAPSHOT\wireless-treasure-0.0.1-20190512.084028-74.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter-aop\1.5.1.RELEASE\spring-boot-starter-aop-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter\1.5.1.RELEASE\spring-boot-starter-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter-logging\1.5.1.RELEASE\spring-boot-starter-logging-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\jcl-over-slf4j\1.7.22\jcl-over-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\jul-to-slf4j\1.7.22\jul-to-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\log4j-over-slf4j\1.7.22\log4j-over-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\yaml\snakeyaml\1.17\snakeyaml-1.17.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoda\delibird-client\1.1-SNAPSHOT\delibird-client-1.1-20180508.113345-1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-core\0.0.1-SNAPSHOT\wireless-core-0.0.1-20190611.015153-31.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\slf4j-api\1.7.22\slf4j-api-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-paging\0.0.1-SNAPSHOT\wireless-paging-0.0.1-20181204.032446-13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-global-switches\1.0.1-SNAPSHOT\wireless-global-switches-1.0.1-20180412.083621-13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-autoconfigure\1.5.1.RELEASE\spring-boot-autoconfigure-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot\1.5.1.RELEASE\spring-boot-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\logging\log4j\log4j-api\2.7\log4j-api-2.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\logging\log4j\log4j-core\2.7\log4j-core-2.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-global-switches-api\1.0.1-SNAPSHOT\wireless-global-switches-api-1.0.1-20180312.093106-2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\config-service-api\0.0.1-SNAPSHOT\config-service-api-0.0.1-20190228.085310-36.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\redcliff\redcliff-basedata-service-api\1.0.1-SNAPSHOT\redcliff-basedata-service-api-1.0.1-20171116.091850-15.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\dubbo-base\1.0.4\dubbo-base-1.0.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\redcliff\region-service-api\3.2.3-SNAPSHOT\region-service-api-3.2.3-20171016.081416-6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\hibernate\hibernate-validator\4.3.2.Final\hibernate-validator-4.3.2.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\jboss\logging\jboss-logging\3.3.0.Final\jboss-logging-3.3.0.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\universe\universe-rocketmq-common\1.1.0-SNAPSHOT\universe-rocketmq-common-1.1.0-20170329.073620-3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\projectlombok\lombok\1.16.10\lombok-1.16.10.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-core\2.8.6\jackson-core-2.8.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-databind\2.8.6\jackson-databind-2.8.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-tx\4.3.6.RELEASE\spring-tx-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-beans\4.3.6.RELEASE\spring-beans-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-core\4.3.6.RELEASE\spring-core-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm\7.2\asm-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-commons\7.2\asm-commons-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-tree\7.2\asm-tree-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-analysis\7.2\asm-analysis-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar" com.gallant.dispatch.mynative.MyNativeInterface
java.lang.UnsatisfiedLinkError: D:\git\private\test\test-impl\src\main\java\com\gallant\dispatch\mynative\hello.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
	at java.lang.Runtime.load0(Runtime.java:809)
	at java.lang.System.load(System.java:1086)
	at com.gallant.dispatch.mynative.MyNativeInterface.<clinit>(MyNativeInterface.java:10)
Exception in thread "main" 
Process finished with exit code 1

报错很明确的指出了原因,是因为我的系统格式64位,但是编译的c类库是32位的,那么我们制定以下64位的方式编译

// -m32或者-m64指定编译的使用32位还是64位
gcc hello.c com_gallant_dispatch_mynative_MyNativeInterface.h jni.h -m64 -fPIC -shared -o hello.dll

结果报了新得异常

gcc hello.c com_gallant_dispatch_mynative_MyNativeInterface.h jni.h -m64 -fPIC -shared -o hello.dll
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

因为我本身安装的MinGW是32位的所以出现该问题,重新安装64位的MinGW后再编译结果之前的异常又出现了。。。所以如果使用64位的方式编译这个是逃不掉了

In file included from jni.h:45:0:
jni_md.h:34:9: error: unknown type name '__int64'
 typedef __int64 jlong;

解决方法,参考http://www.it1352.com/981501.html

// 如果使用指定jdk中的jni.h、jni_md.h的方式编译,则将下面方法中的操作改为原文件建中操作即可,即hello.c,例如可以helloc.c中增加一行代码,需要再#include "jni.h"该行代码前面不然依然会报错:typedef unsigned long long __int64;
// 方法1:jni_md.h中将typedef __int64 jlong;修改为typedef long jlong;
// 方法2:在jni_md.h中增加如下两行代码
#include <stdint.h>
#define __int64 int64_t
// 方法3:在jni_md.h中增加如下一个代码
#define __int64 long long

执行java代码报错。。。

"D:\Program Files\Java\jdk1.8.0_131\bin\java.exe" -javaagent:D:\Applications\ideaIU-2018.1.3.win\lib\idea_rt.jar=64794:D:\Applications\ideaIU-2018.1.3.win\bin -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\git\private\test\test-impl\target\classes;D:\git\private\test\test-api\target\classes;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\commons\commons-collections4\4.1\commons-collections4-4.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\101tec\zkclient\0.4\zkclient-0.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\dubbo-integration\0.0.2-SNAPSHOT\dubbo-integration-0.0.2-20180420.072844-18.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\alibaba\dubbo\2.5.6.2-D-RELEASE\dubbo-2.5.6.2-D-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-aop\4.3.6.RELEASE\spring-aop-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-expression\4.3.6.RELEASE\spring-expression-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\io\netty\netty-all\4.0.35.Final\netty-all-4.0.35.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\javassist\javassist\3.21.0-GA\javassist-3.21.0-GA.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\route-client\1.1.7-RELEASE\route-client-1.1.7-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\tool-monitor-client\1.0.7-SNAPSHOT\tool-monitor-client-1.0.7-20190325.115924-4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\jezhumble\javasysmon\javasysmon\0.3.4\javasysmon-0.3.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-rt-management\2.7.11\cxf-rt-management-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-api\2.7.11\cxf-api-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\woodstox\woodstox-core-asl\4.2.1\woodstox-core-asl-4.2.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\ws\xmlschema\xmlschema-core\2.1.0\xmlschema-core-2.1.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\geronimo\specs\geronimo-javamail_1.4_spec\1.7.1\geronimo-javamail_1.4_spec-1.7.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\wsdl4j\wsdl4j\1.6.3\wsdl4j-1.6.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\cxf\cxf-rt-core\2.7.11\cxf-rt-core-2.7.11.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\sun\xml\bind\jaxb-impl\2.1.13\jaxb-impl-2.1.13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\fluent-hc\4.3.2\fluent-hc-4.3.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\httpclient\4.4.1\httpclient-4.4.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\httpcomponents\httpcore\4.4.6\httpcore-4.4.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-codec\commons-codec\1.10\commons-codec-1.10.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\tool\route-common\1.1.2-RELEASE\route-common-1.1.2-RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\guava\guava\18.0\guava-18.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\checkerframework\checker-compat-qual\2.0.0\checker-compat-qual-2.0.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\errorprone\error_prone_annotations\2.1.3\error_prone_annotations-2.1.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\google\j2objc\j2objc-annotations\1.1\j2objc-annotations-1.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\mojo\animal-sniffer-annotations\1.14\animal-sniffer-annotations-1.14.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\codehaus\groovy\groovy-all\2.4.7\groovy-all-2.4.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-web\4.3.6.RELEASE\spring-web-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\zookeeper\zookeeper\3.4.5\zookeeper-3.4.5.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\slf4j-log4j12\1.7.22\slf4j-log4j12-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\Applications\apache-maven-3.5.0\conf\repository\junit\junit\4.12\junit-4.12.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\monitor\monitor-client\2.2.5\monitor-client-2.2.5.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\alibaba\fastjson\1.2.24\fastjson-1.2.24.jar;D:\Applications\apache-maven-3.5.0\conf\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-context\4.3.6.RELEASE\spring-context-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-threadpool\0.0.1-SNAPSHOT\wireless-threadpool-0.0.1-20180627.062225-23.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\commons\commons-lang3\3.4\commons-lang3-3.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-treasure\0.0.1-SNAPSHOT\wireless-treasure-0.0.1-20190512.084028-74.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter-aop\1.5.1.RELEASE\spring-boot-starter-aop-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter\1.5.1.RELEASE\spring-boot-starter-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-starter-logging\1.5.1.RELEASE\spring-boot-starter-logging-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\jcl-over-slf4j\1.7.22\jcl-over-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\jul-to-slf4j\1.7.22\jul-to-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\log4j-over-slf4j\1.7.22\log4j-over-slf4j-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\yaml\snakeyaml\1.17\snakeyaml-1.17.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoda\delibird-client\1.1-SNAPSHOT\delibird-client-1.1-20180508.113345-1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-core\0.0.1-SNAPSHOT\wireless-core-0.0.1-20190611.015153-31.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\slf4j\slf4j-api\1.7.22\slf4j-api-1.7.22.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-paging\0.0.1-SNAPSHOT\wireless-paging-0.0.1-20181204.032446-13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-global-switches\1.0.1-SNAPSHOT\wireless-global-switches-1.0.1-20180412.083621-13.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot-autoconfigure\1.5.1.RELEASE\spring-boot-autoconfigure-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\boot\spring-boot\1.5.1.RELEASE\spring-boot-1.5.1.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\logging\log4j\log4j-api\2.7\log4j-api-2.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\logging\log4j\log4j-core\2.7\log4j-core-2.7.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\wireless-global-switches-api\1.0.1-SNAPSHOT\wireless-global-switches-api-1.0.1-20180312.093106-2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\config-service-api\0.0.1-SNAPSHOT\config-service-api-0.0.1-20190228.085310-36.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\redcliff\redcliff-basedata-service-api\1.0.1-SNAPSHOT\redcliff-basedata-service-api-1.0.1-20171116.091850-15.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\dubbo-base\1.0.4\dubbo-base-1.0.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\redcliff\region-service-api\3.2.3-SNAPSHOT\region-service-api-3.2.3-20171016.081416-6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\hibernate\hibernate-validator\4.3.2.Final\hibernate-validator-4.3.2.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\jboss\logging\jboss-logging\3.3.0.Final\jboss-logging-3.3.0.Final.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\universe\universe-rocketmq-common\1.1.0-SNAPSHOT\universe-rocketmq-common-1.1.0-20170329.073620-3.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\projectlombok\lombok\1.16.10\lombok-1.16.10.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-core\2.8.6\jackson-core-2.8.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\fasterxml\jackson\core\jackson-databind\2.8.6\jackson-databind-2.8.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-tx\4.3.6.RELEASE\spring-tx-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-beans\4.3.6.RELEASE\spring-beans-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\springframework\spring-core\4.3.6.RELEASE\spring-core-4.3.6.RELEASE.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm\7.2\asm-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-commons\7.2\asm-commons-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-tree\7.2\asm-tree-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\org\ow2\asm\asm-analysis\7.2\asm-analysis-7.2.jar;D:\Applications\apache-maven-3.5.0\conf\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar" com.gallant.dispatch.mynative.MyNativeInterface
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180181048, pid=232, tid=0x000000000000403c
#
# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [cygwin1.dll+0x141048]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\git\private\test\hs_err_pid232.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Process finished with exit code 1

error文件

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180181048, pid=232, tid=0x000000000000403c
#
# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [cygwin1.dll+0x141048]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x000000000336e800):  JavaThread "main" [_thread_in_native, id=16444, stack(0x00000000031e0000,0x00000000032e0000)]

siginfo: ExceptionCode=0xc0000005, writing address 0x0000000117ae2d18

Registers:
RAX=0x0000000000000000, RBX=0x0000000117ae2d08, RCX=0x0000000117ae2d08, RDX=0x0000000000000012
RSP=0x00000000032df170, RBP=0x00000000032df348, RSI=0x0000000017ae2818, RDI=0x00000000ffffffff
R8 =0x0000000000000002, R9 =0x0000000000000000, R10=0x00000000032df130, R11=0x00000001801fc920
R12=0x0000000000000000, R13=0x0000000491123030, R14=0x00000000032dd680, R15=0x000000000336e800
RIP=0x0000000180181048, EFLAGS=0x0000000000010202

Top of Stack: (sp=0x00000000032df170)
0x00000000032df170:   0000000017ae2818 00000000ffffffff
0x00000000032df180:   0000000017ae2818 00000000ffffffff
0x00000000032df190:   00000000032dd680 0000000180181292
0x00000000032df1a0:   00000000032df2c0 000000000000000b
0x00000000032df1b0:   0000000003367ff0 0000000070d2612f
0x00000000032df1c0:   0000000017ae2a88 00000001801ad188
0x00000000032df1d0:   0000000017ae2818 00000000ffffffff
0x00000000032df1e0:   000000000336e800 000000000336e800
0x00000000032df1f0:   0000000017ae2a01 000000000336e800
0x00000000032df200:   00000000176f74a8 000000000336e800
0x00000000032df210:   0000000100002368 0000000100002368
0x00000000032df220:   00000000176f74a8 000000000336e800
0x00000000032df230:   000080ea183dd266 000000000336e800
0x00000000032df240:   00000000032df320 0000000070c3b27c
0x00000000032df250:   0000000000000000 0000000070c05c5b
0x00000000032df260:   000000000336d790 00000000000003d8 

Instructions: (pc=0x0000000180181048)
0x0000000180181028:   eb c8 90 90 90 90 90 90 48 8d 15 f9 ec ff ff e9
0x0000000180181038:   14 46 00 00 0f 1f 40 00 53 48 83 ec 20 48 89 cb
0x0000000180181048:   66 89 51 10 66 44 89 41 12 48 c7 01 00 00 00 00
0x0000000180181058:   c7 41 08 00 00 00 00 48 8d 89 b0 00 00 00 c7 81 


Register to memory mapping:

RAX=0x0000000000000000 is an unknown value
RBX=0x0000000117ae2d08 is an unknown value
RCX=0x0000000117ae2d08 is an unknown value
RDX=0x0000000000000012 is an unknown value
RSP=0x00000000032df170 is pointing into the stack for thread: 0x000000000336e800
RBP=0x00000000032df348 is pointing into the stack for thread: 0x000000000336e800
RSI=0x0000000017ae2818 is pointing into metadata
RDI=0x00000000ffffffff is an unallocated location in the heap
R8 =0x0000000000000002 is an unknown value
R9 =0x0000000000000000 is an unknown value
R10=0x00000000032df130 is pointing into the stack for thread: 0x000000000336e800
R11=0x00000001801fc920 is an unknown value
R12=0x0000000000000000 is an unknown value
R13=0x0000000491123030 is an unknown value
R14=0x00000000032dd680 is pointing into the stack for thread: 0x000000000336e800
R15=0x000000000336e800 is a thread


Stack: [0x00000000031e0000,0x00000000032e0000],  sp=0x00000000032df170,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [cygwin1.dll+0x141048]
C  [cygwin1.dll+0x141292]
C  [cygwin1.dll+0x16d188]
C  [cygwin1.dll+0x14e98e]
C  [cygwin1.dll+0xd97ea]
C  0x00000000032df800

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.gallant.dispatch.mynative.MyNativeInterface.helloWorld()V+0
j  com.gallant.dispatch.mynative.MyNativeInterface.main([Ljava/lang/String;)V+9
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x0000000019adc800 JavaThread "Service Thread" daemon [_thread_blocked, id=8800, stack(0x000000001a5d0000,0x000000001a6d0000)]
  0x0000000019ab0000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=6020, stack(0x000000001a4d0000,0x000000001a5d0000)]
  0x0000000019a28000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=16848, stack(0x000000001a3d0000,0x000000001a4d0000)]
  0x0000000019a27800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=15020, stack(0x000000001a2d0000,0x000000001a3d0000)]
  0x0000000019a11800 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=14180, stack(0x000000001a1d0000,0x000000001a2d0000)]
  0x0000000019413800 JavaThread "Attach Listener" daemon [_thread_blocked, id=3560, stack(0x00000000198d0000,0x00000000199d0000)]
  0x0000000018096800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=16844, stack(0x00000000197d0000,0x00000000198d0000)]
  0x000000001806f800 JavaThread "Finalizer" daemon [_thread_blocked, id=18172, stack(0x00000000192d0000,0x00000000193d0000)]
  0x0000000003467000 JavaThread "Reference Handler" daemon [_thread_blocked, id=8412, stack(0x00000000191d0000,0x00000000192d0000)]
=>0x000000000336e800 JavaThread "main" [_thread_in_native, id=16444, stack(0x00000000031e0000,0x00000000032e0000)]

Other Threads:
  0x0000000018048000 VMThread [stack: 0x00000000190d0000,0x00000000191d0000] [id=17996]
  0x0000000019ba6000 WatcherThread [stack: 0x000000001a6d0000,0x000000001a7d0000] [id=6924]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap:
 PSYoungGen      total 37888K, used 4595K [0x00000000d6500000, 0x00000000d8f00000, 0x0000000100000000)
  eden space 32768K, 14% used [0x00000000d6500000,0x00000000d697ce48,0x00000000d8500000)
  from space 5120K, 0% used [0x00000000d8a00000,0x00000000d8a00000,0x00000000d8f00000)
  to   space 5120K, 0% used [0x00000000d8500000,0x00000000d8500000,0x00000000d8a00000)
 ParOldGen       total 86016K, used 0K [0x0000000082e00000, 0x0000000088200000, 0x00000000d6500000)
  object space 86016K, 0% used [0x0000000082e00000,0x0000000082e00000,0x0000000088200000)
 Metaspace       used 3532K, capacity 4500K, committed 4864K, reserved 1056768K
  class space    used 389K, capacity 392K, committed 512K, reserved 1048576K

Card table byte_map: [0x00000000129d0000,0x0000000012dc0000] byte_map_base: 0x00000000125b9000

Marking Bits: (ParMarkBitMap*) 0x000000007132c720
 Begin Bits: [0x0000000013460000, 0x00000000153a8000)
 End Bits:   [0x00000000153a8000, 0x00000000172f0000)

Polling page: 0x0000000001540000

CodeCache: size=245760Kb used=1153Kb max_used=1165Kb free=244606Kb
 bounds [0x0000000003610000, 0x0000000003880000, 0x0000000012610000]
 total_blobs=304 nmethods=46 adapters=171
 compilation: enabled

Compilation events (10 events):
Event: 0.494 Thread 0x0000000019ab0000 nmethod 40 0x000000000372b850 code [0x000000000372ba20, 0x000000000372c078]
Event: 0.494 Thread 0x0000000019ab0000   35   !   3       sun.misc.URLClassPath$JarLoader::getResource (85 bytes)
Event: 0.495 Thread 0x0000000019ab0000 nmethod 35 0x000000000372a2d0 code [0x000000000372a520, 0x000000000372b148]
Event: 0.495 Thread 0x0000000019ab0000   45       3       java.lang.String::lastIndexOf (52 bytes)
Event: 0.496 Thread 0x0000000019ab0000 nmethod 45 0x000000000372f850 code [0x000000000372f9e0, 0x000000000372fd88]
Event: 0.496 Thread 0x0000000019ab0000   42       3       java.lang.String::<init> (10 bytes)
Event: 0.496 Thread 0x0000000019ab0000 nmethod 42 0x0000000003729f10 code [0x000000000372a060, 0x000000000372a230]
Event: 0.498 Thread 0x0000000019a28000   46       4       sun.nio.cs.ext.DoubleByte$Encoder::encodeChar (21 bytes)
Event: 0.499 Thread 0x0000000019a27800 nmethod 43 0x00000000037330d0 code [0x0000000003733220, 0x00000000037337e8]
Event: 0.500 Thread 0x0000000019a28000 nmethod 46 0x0000000003730090 code [0x00000000037301e0, 0x00000000037302d8]

GC Heap History (0 events):
No events

Deoptimization events (0 events):
No events

Internal exceptions (10 events):
Event: 0.053 Thread 0x000000000336e800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x00000000d6507ca8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\
Event: 0.053 Thread 0x000000000336e800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x00000000d6507f90) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims
Event: 0.327 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66b7650) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.327 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66b7860) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.328 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66b8c18) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.328 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66b8e28) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.328 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66ba258) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.328 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66ba468) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.329 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66bb820) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]
Event: 0.329 Thread 0x000000000336e800 Exception <a 'java/security/PrivilegedActionException'> (0x00000000d66bba30) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u131\8869\hotspot\src\share\vm\prims\jvm.cpp, line 1390]

Events (10 events):
Event: 0.488 loading class sun/launcher/LauncherHelper
Event: 0.489 loading class sun/launcher/LauncherHelper done
Event: 0.491 loading class com/gallant/dispatch/mynative/MyNativeInterface
Event: 0.491 loading class com/gallant/dispatch/mynative/MyNativeInterface done
Event: 0.492 loading class sun/misc/URLClassPath$FileLoader$1
Event: 0.492 loading class sun/misc/URLClassPath$FileLoader$1 done
Event: 0.494 loading class sun/launcher/LauncherHelper$FXHelper
Event: 0.495 loading class sun/launcher/LauncherHelper$FXHelper done
Event: 0.495 loading class java/lang/Void
Event: 0.495 loading class java/lang/Void done


Dynamic libraries:
0x00007ff7ebc50000 - 0x00007ff7ebc87000 	D:\Program Files\Java\jdk1.8.0_131\bin\java.exe
0x00007ffb9a080000 - 0x00007ffb9a270000 	C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffb98540000 - 0x00007ffb985f2000 	C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffb97330000 - 0x00007ffb975d3000 	C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffb98440000 - 0x00007ffb984e3000 	C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffb98160000 - 0x00007ffb981fe000 	C:\WINDOWS\System32\msvcrt.dll
0x00007ffb98600000 - 0x00007ffb98697000 	C:\WINDOWS\System32\sechost.dll
0x00007ffb99ac0000 - 0x00007ffb99be0000 	C:\WINDOWS\System32\RPCRT4.dll
0x00007ffb994e0000 - 0x00007ffb99674000 	C:\WINDOWS\System32\USER32.dll
0x00007ffb975e0000 - 0x00007ffb97601000 	C:\WINDOWS\System32\win32u.dll
0x00007ffb984f0000 - 0x00007ffb98516000 	C:\WINDOWS\System32\GDI32.dll
0x00007ffb97090000 - 0x00007ffb97224000 	C:\WINDOWS\System32\gdi32full.dll
0x00007ffb98090000 - 0x00007ffb9812e000 	C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb97610000 - 0x00007ffb9770a000 	C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb7f9f0000 - 0x00007ffb7fc75000 	C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d\COMCTL32.dll
0x00007ffb99c90000 - 0x00007ffb99fc6000 	C:\WINDOWS\System32\combase.dll
0x00007ffb97010000 - 0x00007ffb97090000 	C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb98130000 - 0x00007ffb9815e000 	C:\WINDOWS\System32\IMM32.DLL
0x00000000713b0000 - 0x0000000071482000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\msvcr100.dll
0x0000000070b10000 - 0x00000000713ac000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\server\jvm.dll
0x00007ffb9a030000 - 0x00007ffb9a038000 	C:\WINDOWS\System32\PSAPI.DLL
0x00007ffb93510000 - 0x00007ffb93519000 	C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffb934e0000 - 0x00007ffb93504000 	C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffb98200000 - 0x00007ffb9826f000 	C:\WINDOWS\System32\WS2_32.dll
0x00007ffb897f0000 - 0x00007ffb897fa000 	C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffb93400000 - 0x00007ffb9342d000 	C:\WINDOWS\SYSTEM32\WINMMBASE.dll
0x00007ffb97710000 - 0x00007ffb9775a000 	C:\WINDOWS\System32\cfgmgr32.dll
0x0000000070b00000 - 0x0000000070b0f000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\verify.dll
0x0000000070ad0000 - 0x0000000070af9000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\java.dll
0x0000000070aa0000 - 0x0000000070ac3000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\instrument.dll
0x0000000070a60000 - 0x0000000070a76000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\zip.dll
0x00007ffb98df0000 - 0x00007ffb994d5000 	C:\WINDOWS\System32\SHELL32.dll
0x00007ffb99be0000 - 0x00007ffb99c89000 	C:\WINDOWS\System32\shcore.dll
0x00007ffb97760000 - 0x00007ffb97edf000 	C:\WINDOWS\System32\windows.storage.dll
0x00007ffb96ff0000 - 0x00007ffb9700f000 	C:\WINDOWS\System32\profapi.dll
0x00007ffb96f80000 - 0x00007ffb96fca000 	C:\WINDOWS\System32\powrprof.dll
0x00007ffb96f50000 - 0x00007ffb96f60000 	C:\WINDOWS\System32\UMPDC.dll
0x00007ffb99fd0000 - 0x00007ffb9a022000 	C:\WINDOWS\System32\shlwapi.dll
0x00007ffb96f60000 - 0x00007ffb96f71000 	C:\WINDOWS\System32\kernel.appcore.dll
0x00007ffb97310000 - 0x00007ffb97327000 	C:\WINDOWS\System32\cryptsp.dll
0x00007ffb6d410000 - 0x00007ffb6d42a000 	D:\Applications\ideaIU-2018.1.3.win\bin\breakgen64.dll
0x0000000070a00000 - 0x0000000070a1a000 	D:\Program Files\Java\jdk1.8.0_131\jre\bin\net.dll
0x00007ffb967c0000 - 0x00007ffb96827000 	C:\WINDOWS\system32\mswsock.dll
0x0000000491120000 - 0x000000049114b000 	D:\git\private\test\test-impl\src\main\java\com\gallant\dispatch\mynative\hello.dll
0x0000000180040000 - 0x0000000180600000 	D:\cygwin64\bin\cygwin1.dll
0x00007ffb7b770000 - 0x00007ffb7b964000 	C:\WINDOWS\SYSTEM32\dbghelp.dll

VM Arguments:
jvm_args: -javaagent:D:\Applications\ideaIU-2018.1.3.win\lib\idea_rt.jar=64794:D:\Applications\ideaIU-2018.1.3.win\bin -Dfile.encoding=UTF-8 
java_command: com.gallant.dispatch.mynative.MyNativeInterface
java_class_path (initial): D:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\git\private\test\test-impl\target\classes;D:\git\private\test\test-api\target\classes;D:\Applications\apache-maven-3.5.0\conf\repository\org\apache\commons\commons-collections4\4.1\commons-collections4-4.1.jar;D:\Applications\apache-maven-3.5.0\conf\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\101tec\zkclient\0.4\zkclient-0.4.jar;D:\Applications\apache-maven-3.5.0\conf\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar;D:\Applications\apache-maven-3.5.0\conf\repository\com\dianwoba\wireless\dubbo-integration\0.0.2-SNAPSHOT\dubbo-integration-0.0.2-20180420.072844-18.jar;D:
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=D:\Program Files\Java\jdk1.8.0_131
PATH=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\Applications\apache-maven-3.5.0\bin;D:\Program Files\Java\jdk1.8.0_131\bin;D:\Program Files\Git;D:\Program Files\Git\bin;D:\Applications\pandoc-2.2.2.1;D:\Program Files\nodejs\;D:\Applications\btrace-bin-1.3.8.3\bin;D:\Program Files\MinGW\bin;D:\Program Files\TortoiseHg\;D:\cygwin64\bin;D:\Ruby22-x64\bin;C:\Users\Gallant\AppData\Local\Microsoft\WindowsApps;D:\Applications\mysql-5.7.19-winx64\bin;D:\Applications\redis-2.4.5-win32-win64\64bit;C:\Users\Gallant\AppData\Roaming\npm;
USERNAME=Gallant
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 9, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 10.0 , 64 bit Build 18362 (10.0.18362.329)

CPU:total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 142 stepping 9, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx

Memory: 4k page, physical 8193548k(999668k free), swap 12904736k(1568344k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (25.131-b11) for windows-amd64 JRE (1.8.0_131-b11), built on Mar 15 2017 01:23:53 by "java_re" with MS VC++ 10.0 (VS2010)

time: Sun Oct 13 22:37:05 2019
elapsed time: 0 seconds (0d 0h 0m 0s)


偶尔还会报错其他异常不再打印error日志,输出异常如下,偶尔会不报错但一直卡在native方法执行那里

Process finished with exit code -1073741819 (0xC0000005)

查资料偶人反馈是金山词霸的划词翻译导致的,退出即可但是我本身是没有该应用的,但是我有有道词典,也有划词翻译,于是退出有道词典,并没有效果-_-!!!

其中Failed to write core dump. Minidumps are not enabled by default on client versions of Windows问题可以通过增加JVM执行参数解决

-XX:+CreateMinidumpOnCrash
// 增加参数后dump文件可以正常输出
# Core dump written. Default location: D:\git\private\test\hs_err_pid12964.mdmp

于是在oracle官网查询相关的bug看到已经有人提出过问题,最终确认不是bug,并且讨论中给出了解决方法。问题地址:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8151067
解决方法:https://stackoverflow.com/questions/31783516/java-jni-c-program-works-fine-with-mingw32-and-not-with-cygwin64?lq=1
按照讨论中的描述下载匹配的工具java-launcher.exe:https://drive.google.com/drive/folders/1_6aBsmCOabtka5akRjo87v2JP1ST7FIU
执行命令

D:/Applications/terminator/Resources/salma-hayek/.generated/amd64_Cygwin/bin/java-launcher.exe com/gallant/dispatch/mynative/MyNativeInterface

报错找不到jvm.dll,因为本地使用的绿色的jdk,目录与该工具的期望目录有些差异而报错,按照报错中的目录将jvm.dll拷贝至报错中指定的目录即可,如:D:\Program Files\Java\jdk1.8.0_131\bin\client
在这里插入图片描述
博主的jdk是server版的,jre中是server目录,所以将整个server目录拷贝至jdk的bin目录下,然后执行命令中增加-server参数,命令如下

D:/Applications/terminator/Resources/salma-hayek/.generated/amd64_Cygwin/bin/java-launcher.exe -server com/gallant/dispatch/mynative/MyNativeInterface

执行命令不再报错但是依然没有输出正常期望的hello world。。。

总结

JNI的使用方法流程如上,最终的报错应该与环境或者jdk有关,跨语言的整合还真得是有些坎坷-_-!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值