学习JNI,遇到了javah找不到类文件的问题。终于跳坑,来记录。
按照教程: 在jnihello(项目)路径下创建文件夹what(包),在包文件夹下编辑HelloJni.java文件。
在包文件夹下运行javac HelloJni.java,生成HelloJni.class。然后无论在what文件夹下还是在jnihello文件夹下运行javah都不对。
问题其实出在javac上,.class和.java文件不能在同一目录下。按照下图放置class文件。
root@chenyy:~/IdeaProjects/Jnihello/src# tree
.
├── class
│ └── what
│ └── HelloJni.class
├── what
│ └── HelloJni.java
└── what_HelloJni.h
3 directories, 3 files
root@chenyy:~/IdeaProjects/Jnihello/src# javah -classpath class what.HelloJni
便可在src下生成.h文件
.cpp生成.so
g++ -fPIC -shared -I /usr/lib/jvm/java-8-openjdk-amd64/include -I /usr/lib/jvm/java-8-openjdk-amd64/include/linux HelloJNI.cpp -o libHello.so