1

在 JNI 中使用它时提到了 --> Javah 错误

...而且 --> android - javah 找不到我的班级

...我仍然无法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。我试过在前面加上“:”,这没什么区别。我假设这是详细输出而不是核心功能中的错误。

4

1 回答 1

4

知道了!它需要编译的类,而不是源代码。此外,类文件夹 -./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确保它覆盖任何现有文件。

于 2014-10-09T09:26:10.940 回答