引用--> Javah error while using it in JNI
...和 --> android - javah doesn't find my class
...我仍然无法让 javah
工作。具体...
我的 java 类位于此处:
/Users/HKS/Code/MusicPlayer-Android/dspLibrary/src/main/java/com/company/audio/LibDSP.java`
从这个文件夹...
/Users/HKS/Code/MusicPlayer-Android/dspLibrary/src/main/java/`
...我试过运行...
javah com.company.audio.LibDSP
javah -classpath . com.company.audio.LibDSP
javah -classpath /Applications/Android\ Studio.app/sdk/platforms/android-16/android.jar:. -jni com.company.audio.LibDSP
...我也在包含 .java
文件的实际文件夹中尝试过此操作...
javah LibDSP
javah -classpath . LibDSP
所有给通常...
error: cannot access com.company.audio.LibDSP
class file for com.company.audio.LibDSP not found
javadoc: error - Class com.company.audio.LibDSP not found.
Error: No classes were specified on the command line. Try -help.
有什么想法吗?
附带的详细日志在搜索路径中显示了一些奇怪的东西...
[ Search Path: /System/Library/Java/JavaVirtualMachines....../Contents/Classes/charsets.jar//Applications/Android Studio.app/sdk/platforms/android-16/android.jar:. ]
注意那些用 -classpath
添加的似乎没有分隔符。我试过预先挂起“:”,但没有任何区别。我假设这是详细输出中的错误,而不是核心功能。
最佳答案
明白了!它需要编译的类,而不是源代码。此外,类文件夹 - ./build/intermediates/classes/debug
在 Android Studio 的项目中是隐藏的。
这是最终为我工作的路线。从我模块的根文件夹 (/Users/HKS/Code/MusicPlayer-Android/dspLibrary/
):
javah -classpath /Applications/Android\ Studio.app/sdk/platforms/android-16/android.jar:./build/intermediates/classes/debug -jni -d src/main/jni -force com.company.audio.LibDSP
注意 -d
标志是输出文件夹,-force
确保它覆盖任何现有文件。
关于Javah 仍然无法在 OSX/Android Studio 中找到类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274155/