3

Android NDK アプリケーション用に Javah を使用して .h ファイルを作成しようとしていました。私は cygwin を使用して同じことをしています。

現在のアプリケーションの bin フォルダーにワークスペースを修正し、次のコマンドを実行しました:-

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar myNDK\bin\classes my.first.NDK.MyNDKActivity

ただし、一貫して次のエラーが発生しています:-

error: cannot access myNDKbinclasses
class file for myNDKbinclasses not found
javadoc: error - Class myNDKbinclasses not found.
error: cannot access my.first.NDK.MyNDKActivity
class file for my.first.NDK.MyNDKActivity not found
javadoc: error - Class my.first.NDK.MyNDKActivity not found.
Error: No classes were specified on the command line.  Try -help.

誰でもこの問題を解決するのを手伝ってくれますか?

また、Javaファイルを含むフォルダーに移動してそこでjavahを実行しようとしましたが、それでも同じエラーが発生しました:-

error: cannot access MyNDKActivity
class file for MyNDKActivity not found
javadoc: error - Class MyNDKActivity not found.
Error: No classes were specified on the command line.  Try -help.

それはどういうわけか、問題が何らかの許可の問題によるものであることを示していると思います。

4

4 に答える 4

2

クラスパスに区切り記号がないようです:

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity
于 2012-10-06T14:19:06.367 に答える
1

最後に、問題を解決しました。使用していたクラスパスに問題がありました。ここに最終的な解決策があります:-

  1. コマンドをどこから実行するか$PROJECT_DIRECTORY/src

  2. Android ビルド システムの ant 部分は、実際にはクラス ファイルをbin/classes. したがって、クラスパスは $PROJECT_DIRECTORY/bin/classes の形式にする必要があります

  3. javah -classpath ../bin/classes my.first.NDK.MyNDKActivity

于 2012-10-06T15:59:33.157 に答える
1

SDKパスのオプション[-bootclasspath]を追加してください。

javah -bootclasspath /home/lmdyyh/development/adt-bundle-linux-x86-20131030/sdk/platforms/android-19/android.jar -classpath bin/classes -d jni com.myndk.Myndk

于 2014-01-13T13:36:20.293 に答える
1

あなたの行で android.jar は何をしていますか?!

また、MyNDKActivity はネイティブ署名を含むクラスですか?

私はこの形式でjavahを使用しました(私にとってはうまくいきます):

javah -d output/ -classpath /home/bod/path/to/eclipse/workspace/project/classes com.myapp.NDKBridge

どこ:

-d output/は、生成されたヘッダーを収集するディレクトリです

-classpath /home/.../classes - プロジェクト内のクラスを含むフォルダー

com.myapp.NDKBridge -ネイティブ署名 を宣言するクラスの名前。

于 2012-10-06T14:37:43.790 に答える