使用COM4J连接到Quality Center v11

时间:2013-03-25 21:23:29

标签: java com4j hp-quality-center

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

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

我得到错误:

    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 个答案:

答案 0 :(得分:2)

我按照以下步骤使用Windows 7 32位计算机上的com4j从Java代码连接到HP QC 11

  1. https://github.com/downloads/kohsuke/com4j/com4j-20120426-2.zip下载Com4j artefacts com4j-20120426-2.zip

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

  3. 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文件,如下所示。

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

      1. 现在在eclipse中创建一个Java项目。在src文件夹中复制在步骤2中创建的DDDD文件夹。在类构建路径中添加com4j.jar。然后在java文件中包含以下代码以测试HP QC连接。运行java文件以检查结果。
      2. 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());

        希望这会有所帮助。 :)

答案 1 :(得分:1)

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

安装完毕后,我就能连接到QC了。

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

答案 2 :(得分:0)

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

答案 3 :(得分: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();
                    }

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