Java学习篇之"/>
Java学习篇之
一、环境:
Windows 版本:Windows 7 旗舰版
系统类型:64位操作系统
工具:1)Eclipse;
2)Microsoft Visual Stutio 2008
二、步骤:
1、新建一个Java项目:
1)File-->New-->Java Project
2)命名项目名称为jnitest
3)选中文件夹src,右键New-->Package
4)命名包名为com.ryze.jni.test
5)选中包名com.ryze.jni.test,右键New-->Class
6)命名类名为HelloWorld
7)在java代码中声明一个native方法如下:
源码如下:
package com.ryze.jni.test;public class HelloWorld {public native void sayHello();public static void main(String[] args) {}}
8)使用javah生成包含native方法定义的c/c++头文件:
HelloWorld.class文件所在目录如下
在DOS环境下:
报错了,空指针错误,这是怎么回事呢?
在同事电脑上相同的目录下,相同的代码,相同的命令在自己的电脑上却一直报空指针错误。因为之前在自己电脑上成功生成过头文件,但是由于之后的两天忙别的项目,修改过eclipse上关于jdk和jre的路径,结果回头来再次生成头文件时却有错误了。
google一下:
挨个点击进去查看,一个一个排除,然后点击进入以下链接:
呀!点进了JavahTask类的源码,这下可好,分析源码吧:
先要研究JavahTask源码的朋友,猛戳此处!
源码505行一处getSystemJavaCompiler()吸引了我的注意:
这句话不正是获取系统编译环境的吗?
追溯源头,ToolProvider:
点击进去,追溯源头:
在168行看见tool.jar,再往下一看182行java.home,然后下面183的jre我喜出望外,终于看到希望了!
但是到底file.getName的值是不是jre呢,经过测试还真是jre:
然后通过点击项目的Properties:
也就是说系统会在
路径: C:\Program Files\Java\jre7
下的lib文件夹寻找tools.jar,但是我这个目录下是没有tools.jar的啊,到这里我算明白为什么报com.sun.tools.*的错了,果断从JDK目录
C:\Program Files\Java\jdk1.7.0_45\lib
下拷贝一个tools.jar放到以下目录:
C:\Program Files\Java\jre7\lib
然后再次打开熟悉的DOS,运行熟悉的命令:
妈妈再也不用担心我javah报错了!
更多推荐
Java学习篇之
发布评论