3

我正在尝试使用 Java 代码和 com4j 连接到 HP Quality Center V11,但我不断收到以下错误。有人可以看看错误吗?

当我在浏览器中使用 URL 并使用相同的凭据登录时,我能够登录。我仔细检查了我的域、网址、ID 和密码的所有拼写。

我得到的错误:

    com4j.ComException: 800403ea (Unknown error) : Failed to Login : .\invoke.cpp:517
    at com4j.Wrapper.invoke(Wrapper.java:166)
    at $Proxy5.connectProjectEx(Unknown Source)
    at com.testpack.TestClass.main(TestClass.java:23)
Caused by: com4j.ComException: 800403ea (Unknown error) : Failed to Login : .\invoke.cpp:517
    at com4j.Native.invoke(Native Method)
    at com4j.StandardComMethod.invoke(StandardComMethod.java:35)
    at com4j.Wrapper$InvocationThunk.call(Wrapper.java:340)
    at com4j.Task.invoke(Task.java:51)
    at com4j.ComThread.run0(ComThread.java:153)
    at com4j.ComThread.run(ComThread.java:134)

我用来连接的代码

public static void main(String[] args) {
String url="http://XXXX/qcbin/";
    String domain="ACTIVE";
    String project="QC_2013_Projects";
    String username="XXXX";
    String password="XXXXX";
    try{
        ITDConnection itd=ClassFactory.createTDConnection();
        itd.initConnectionEx(url);
        System.out.println("Test1:"+ itd.connected());

        itd.connectProjectEx(domain,project,username,password);

        //System.out.println(itd.connected());
    }catch(Exception e){

        e.printStackTrace();
    }
}
4

4 回答 4

2

我按照这些步骤在 Windows 7 32 位机器上使用 com4j 从 Java 代码连接到 HP QC 11

  1. 从https://github.com/downloads/kohsuke/com4j/com4j-20120426-2.zip下载 Com4j 人工制品 com4j-20120426-2.zip

  2. 解压它。打开命令提示符并导航到解压缩的文件夹。然后运行以下命令在 CCCC 位置创建 Wrapper 类,包结构为 DDDD。

java -jar tlbimp.jar -o "C:\CCCC" -p "DDDD" "C:\Users\MYACC\AppData\Local\HP\ALM-Client\10\OTAClient.dll"

  1. 现在从 C:\Users\MYACC\AppData\Local\HP\ALM-Client\10 复制 OTAClient.dll 和 WebClient.dll 并将其保存在 Windows/System32 文件夹中。

  2. 执行第 2 步后,您必须在 tlbimp.jar 所在的位置有一个 com4j-x86.dll。现在将该 dll 复制到 Windows/System32 文件夹。

  3. 现在具有管理员权限,使用命令 1 逐 1 注册所有 3 个 dll 文件,如下所示。

regsvr32 com4j-x86.dll
regsvr32 OTAClient.dll
regsvr32 WebClient.dll

  1. 现在在 Eclipse 中创建一个 Java 项目。在 src 文件夹中复制步骤 2 中创建的 DDDD 文件夹。在类构建路径中添加 com4j.jar。然后在 java 文件中添加以下代码来测试 HP QC 连接。运行 java 文件以检查结果。

ITDConnection itd=ClassFactory.createTDConnection();
itd.initConnectionEx("http://10.10.10.10:8080/qcbin");
System.out.println(itd.connected());
itd.connectProjectEx("DOMAIN_NAME", "PROJECT_NAME", "HPQC_USERID", "HPQC_CREDENTIAL");
System.out.println(itd.projectConnected());

希望这可以帮助。:)

于 2015-03-25T13:46:15.703 回答
1

我终于能够解决这个问题。我已经安装了 HP ALM QC 客户端。它将安装在以下路径中->您的程序文件->HP->HP ALM 客户端。

安装后,我能够连接到 QC。

希望这可能对其他人有用。谢谢!

于 2013-03-27T15:05:13.483 回答
0
                    // This is a fairly important section for x64 bit machines,
                    // as a note this took me forever to figure out. Basically,
                    // if the DLL is not registered in the SysWOW64 dir then we
                    // are unable to use this as it was created when 32-bit
                    // computers were still all the rage. This is a quick little
                    // hack that registers it if it is needed to be registered.
                    // If it's already registered, this does nothing.
                    try {
                        Runtime.getRuntime()
                                .exec("C:\\windows\\SysWOW64\\regsvr32 /s lib\\OTAClient.dll")
                                .waitFor();
                        Runtime.getRuntime()
                                .exec("C:\\windows\\SysWOW64\\regsvr32 /s lib\\com4j-amd64.dll")
                                .waitFor();
                        Runtime.getRuntime()
                                .exec("C:\\windows\\SysWOW64\\regsvr32 /s lib\\com4j-x86.dll")
                                .waitFor();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Utilities
                                .showError(
                                        new JFrame(),
                                        "OTAClient.dll, com4j-amd64.dll or com4j-x86.dll could not "
                                                + "be registered, program may or may not work on a 64-bit machine "
                                                + "without these files. You can attempt to manually register them, "
                                                + "but this rarely works.");
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

在代码中的任何其他内容之前运行它,这是我用来强制任何机器注册它们的方法。

于 2018-03-12T14:03:32.520 回答
0

我在 c:\Windows\SysWOW64 中添加了所有 3 个 .dll 文件并执行了相同的代码。

于 2016-01-30T15:30:35.260 回答