javah找不到类文件终极跳坑

学习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

 

 

你可能感兴趣的:(jni)