2

Rational Functional Tester スクリプトに、dll で定義されたメソッド (jni 呼び出し用に作成) を呼び出す 2 行のコードがあります。しかし、エラーが発生しています: [java.lang.UnsatisfiedLinkError] - com/JniSleep.jniWait()V.]。

リソースをインポートします。Script1Helper;

com.JniClass をインポートします。

public class Script1 extends Script1Helper {

static {
    System.load("C:/VisualStudioProject/JniClass/Debug/JniClass.dll");

}
public void testMain(Object[] args) 

{

        JniClass jniClass = new JniClass();
        jniClass.jniWait(); //error thrown here

}

}

同じ RFT プロジェクト内の通常の Java クラス (RFT スクリプトではない) で同じコードを実行すると、魅力的に動作します (以下のコード)。

com.JniClass をインポートします。

パブリック クラス testTimer {

/**
 * @param args
 */

    // TODO Auto-generated method stub
    static {
        System.load("C:/VisualStudioProject/JniClass/Debug/JniClass.dll");
    }
    public static void main(String[] args) {


            JniClass jniClass = new JniClass();
            jniClass.jniWait();

    }

}

コードが RFT スクリプトで機能しないのはなぜですか? ネイティブ ライブラリ設定でも ddl を設定しようとしましたが、それは役に立ちませんでした。誰でも助けてください。

4

3 に答える 3

0

あなたのコードは言う

import com.JniClass;

あなたのエラーが言う間

com/JniSleep

これらの2つのパッケージは等しくなければなりません。Javaネイティブ定義と生成されたCヘッダーの間に矛盾があるように感じます。どちらの場合もまったく同じDLLを使用していますか?どのヘッダーがありますか?Java_com_JniClassまたはJava_com_JniSleep

于 2012-11-15T16:43:00.287 に答える
0

RFT で System.load が機能していません。ネイティブ メソッドにアクセスするには、含める jar ファイルで System.load を明示的に呼び出す必要があります。この jar ファイルをインクルードし、DLL をシステムの 'PATH' ディレクトリの 1 つに配置すると、DLL が RFT に正常にロードされます。

于 2012-11-19T20:17:32.013 に答える
0

同じことが RFT の外部で正常に機能している場合、ネイティブ実装を含む DLL を RFT のカスタマイズ フォルダーにコピー (コピー) していただけますか? 次のレジストリは、マシン上の Customization フォルダーの場所 [HKEY_LOCAL_MACHINE\SOFTWARE\Rational Software\Rational Test\8\Rational FT Customization Directory] ​​を示しています。

これらの変更を行う前/後に、RFT を閉じる/再度開く。

于 2012-11-16T05:55:58.533 に答える