Java по-прежнему не находит файлы классов в OSX/Android Studio

Сославшись на --> ошибка Java при использовании ее в JNI

... и --> 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. Я пробовал предварительно ожидающий ":", и это не имеет значения. Я предполагаю, что это ошибка в подробном выводе, а не в основной функциональности.


person Hari Honor    schedule 09.10.2014    source источник


Ответы (1)


Понятно! Ему нужен скомпилированный класс, а не исходный код. Также папка класса - ./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 гарантирует, что она перезапишет все существующие файлы.

person Hari Honor    schedule 09.10.2014