2017-12-01 1 views
0

コマンドラインからjavahツールを使用してヘッダファイルを作成しようとしていますが、Windows 7 OS上のeclipseで外部ツール設定を使用していますが、 。Javahツールエラー:HelloWorld用のクラスファイルが見つかりませんでした

私のコードは次のとおりです。

package mypackage; 
public class HelloWorld { 
    private static String HelloWorld; 
    private native void print(); 
    static { 
     System.loadLibrary(HelloWorld); 
    } 
    public static void main(String[] args) 
    { 
     new HelloWorld().print(); 
    } 
} 

私はさまざまな方法を踏襲しても、オラクルからのjavahツールのドキュメントを読むが、彼らはこの問題を克服する助けにはならなかったしています。

私のクラスファイル(HelloWorld.classを)およびJavaファイル(HelloWorld.java)の両方がC:\..\eclipse-workspace\Distribution System Process\src\mypackage

である。しかし、私はツールをjavahが実行するたびに、それは私にエラーを与える:

could not find class file for HelloWorld or mypackage.HelloWorld 

私がで裁かクラスパスも提供しますが、ヘッダファイルは取得できません。

注:私のパッケージには2つのクラスがあります。 Frame1.javaはGuiであるメインクラスで、他のクラスはJNIで使用され、HelloWorld.Javaと呼ばれます。私はクラスが問題かどうかわからないが、私は現在、ヘッダファイルを作成するために、HelloWorld.javaに取り組んでいます:

screen shot of my project

私はそれが失敗することを間違って何をしているのですか? 。:(

+0

'javah'コマンドラインはどのように見えますか?あなたは '... \ eclipse-workspace \ Distribution System Process \ bin'ディレクトリに変更する必要があります(' ... \ src'ではなく '... \ src \ mypackage'ではなく' ... \ bin' \ mypackage')、次に 'javah -jni mypackage.HelloWorld'を呼び出します。 – howlger

答えて

0

javahツールは、コンパイル済みのクラスがある場所を、提供する必要がコンパイルされたコードへのアクセスをrequres

は非常に簡単なサンプルコードについてはこちらをご覧ください:。

http://jnicookbook.owsiak.org/recipe-No-001/

をご覧のように、ソースはコンパイルされて別の場所に格納されます(ここではtargetと呼ばれます)

${JAVA_HOME}/bin/javac -d target java/recipeNo001/HelloWorld.java 
${JAVA_HOME}/bin/javah -jni -d c -cp target recipeNo001.HelloWorld 

次に、javahと言うファイルがあります(Javaクラスがコンパイルされています)。これは引数-cpによって行われます。 Cヘッダを格納する場所を

引数-dは、他の一方で、javahを教えてくれます。

関連する問題