【问题标题】:RFT throws unsatisfiedLinkError when making JNI call进行 JNI 调用时,RFT 抛出 unsatisfiedLinkError
【发布时间】:2012-11-03 17:31:23
【问题描述】:

我在 Rational Functional Tester 脚本中有两行代码,它调用在 dll 中定义的方法(为 jni 调用创建)。但我收到错误:[java.lang.UnsatisfiedLinkError] - com/JniSleep.jniWait()V.]。

导入资源.Script1Helper;

导入 com.JniClass;

公共类 Script1 扩展 Script1Helper {

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

}
public void testMain(Object[] args) 

{

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

}

}

如果我在普通的 java 类(不是 RFT 脚本)中运行相同的代码,在同一个 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,但这没有帮助。谁能帮忙。

【问题讨论】:

    标签: java-native-interface rft


    【解决方案1】:

    在 RFT 中,System.load 不起作用。您需要在要包含的 jar 文件中显式调用 System.load 以访问本机方法。包含此 jar 文件并将 DLL 放入系统“PATH”目录之一后,该 dll 在 RFT 中加载良好。

    【讨论】:

      【解决方案2】:

      如果同样的事情在 RFT 之外也能正常工作,您能否尝试将包含本机实现的 DLL 复制到 RFT 的自定义文件夹中? 以下注册表会告诉您机器上 Customization 文件夹的位置是什么 [HKEY_LOCAL_MACHINE\SOFTWARE\Rational Software\Rational Test\8\Rational FT Customization Directory]

      在进行这些更改之前/之后关闭/重新打开 RFT。

      【讨论】:

      • 试过这个。在我的机器上,文件夹是 C:\ProgramData\IBM\RFT\customization。但是脚本仍然抛出同样的错误。 RFT 中是否有不同的方式来加载外部 dll?我也尝试将 dll 名称放在 NativeLibrary 设置中 - 也没有运气。
      【解决方案3】:

      你的代码说

      import com.JniClass;
      

      当你的错误提示时

      com/JniSleep
      

      这两个包必须相等。我闻到了 Java 原生定义和生成的 C 头文件之间的差异。你在这两种情况下都使用完全相同的 DLL 吗?它有哪些标题? Java_com_JniClassJava_com_JniSleep ?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多