java jni书籍_Java JNI使用

javac JniTest.java -d .

javah -classpath . -o JniTest.h com.apple.cai.JniTest

g++ -dynamiclib -o JniTest.jnilib JniTest.cpp -framework JavaVM -I/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/include/darwin

java -Djava.library.path=/Users/apple/JavaProjects -classpath . com.apple.cai.JniTest

使用以上方式运行就是一直报异常,一直找不到原因

Exception in thread "main" java.lang.UnsatisfiedLinkError: no JniTest in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)

at java.lang.Runtime.loadLibrary0(Runtime.java:849)

at java.lang.System.loadLibrary(System.java:1088)

at JniTest.(JniTest.java:7)

javac HelloWorld.java

javah -jni HelloWorld

g++ -I/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/include/darwin -c HelloWorld.cpp

g++ -dynamiclib -o libhelloworld.jnilib HelloWorld.o

java HelloWorld

区别就在于第三第四个命令行(第三行的路径是我电脑上的jni.h的路径地址),而且使用后一种方式竟然不用指定搜索路径(疑惑),如果有大神知道什么原因,望指点一二。不甚感激

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这四种情况下你会用到本书: 1、 在Java程序中复用以前写过的C/C++代码。 2、 自己实现一个java虚拟机 3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。 4、 把一个虚拟机实现整合到用C/C++写的程序中。 本书是写给开发者的。JNI在1997年第一次发布,本书总结了SUN工程师和大量开发者两年来积累的经验。 本书介绍了JNI的设计思想,对这种思想的理解是使用JNI的各种特性的基础。 本书有一部分是JAVA2平台上面的JNI特征的规范说明。JNI程序员可以把这部分用作一个手册。JVM开发者在实现虚拟机的时候必须遵守这些规范。 JNI的部分设计思想来源于Netscape的Java Runtime Interface(JRI)。 第一章 简介 JNIJAVA平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分: 1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。 2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。 3、 11~13章是关于JNI的技术规范。可以把这两章当作一个手册。 本书尽量去满足各类读者的需要。指南面向初学者,手册面向有经验的人和自己实现JNI规范的人。大部分读者可能是用JNI来写程序的开发者。本书会假设你有JAVA,C/C++基础。 本章的剩余部分介绍了JNI的背景,扮演的角色和JNI的演化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值