0

すべての .java ファイルと .class ファイルを 1 か所 (つまり、デフォルト パッケージ) に置くと、すべて問題なく、すべての JNI などを実行できます。ただし、この場合、package-ception (たくさんのディレクトリ) があります。私のクラスとJavaファイルは、などで区切られ/bin/srcいます。また、ヘッダー ファイルを生成する必要がありますが、常にエラーが発生します。非常に多くのコマンドを試したので、さまざまなチュートリアルを見ました。私はすでに選択肢がありません。私のプロジェクトが入ってc://gvk/SEP3いて、私が使用するネイティブメソッドを含むクラスとJavaファイルが入ってい/bin/CalculatorServerます/src/CalculatorServer

javahネイティブメソッドを含むクラスファイルがあるディレクトリから常にコマンドを実行しています。これまでに試したコマンドは次のとおりです。

javah -d ./CalculatorServer NativeMethodsCalculator

エラー: 「NativeMethodsCalculator」のクラス ファイルが見つかりませんでした。

javah -d ./CalculatorServer CalculatorServer.NativeMethodsCalculator

エラー: 「CalculatorServer.NativeMethodsCalculator」のクラス ファイルが見つかりませんでした。

javah -d c://gvk/SEP3/bin/CalculatorServer -classpath c://gvk/SEP3/bin/CalculatorServer NativeMethodsCalculator

エラー: 「NativeMethodsCalculator」のクラス ファイルが見つかりませんでした。

javah -classpath c://gvk/SEP3/bin/CalculatorServer -o NativeMethodsCalc.h src.CalculatorServer.NativeMethodsCalculator

エラー: 'src.CalculatorServer.NativeMethodsCalculator' のクラス ファイルが見つかりませんでした。

javah -jni bin.CalculatorServer.NativeMethodsCalculator

エラー: 「bin.CalculatorServer.NativeMethodsCalculator」のクラス ファイルが見つかりませんでした。

4

2 に答える 2

1

ネイティブメソッドを含むクラスファイルがあるディレクトリからjavahコマンドを常に実行しています

それはあなたの間違いです。最も外側のパッケージを含むディレクトリから実行し、その下に内側のパッケージとその .class ファイルを配置する必要があります。次に、 -d 引数または -classpath 引数は必要ありません。最も外側のパッケージが CalculatorServer であると仮定すると、CalculatorServer を含むディレクトリにいる必要があり、必要なコマンド ラインはjavah CalculatorServer.NativeMethodsCalculator.

于 2012-12-03T23:33:24.383 に答える
1

試していないこと: /bin/(ではなく) に移動しCalculatorServerて実行する

javah -jni CalculatorServer.NativeMethodsCalculator

これが実行する唯一の方法です。javah docを見てください。概要には「完全修飾クラス名」と書かれています。完全修飾」とは、完全なクラスパスを意味します。あなたはそれにクラス名だけを与えていました。これまでのところ、デフォルトのパッケージを使用していたという理由だけでうまくいきました。つまり、完全修飾クラス名はそのままのクラス名と同じでした。

オプション-dであり-o、クラス ルックアップには影響せず、ネイティブ結果のストレージのみに影響します。あなたが試したすべての変種は、あなたの間違いに何の違いもありません.

于 2012-12-04T10:32:58.610 に答える