我正在尝试使用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();
}
}
答案 0 :(得分:2)
我按照以下步骤使用Windows 7 32位计算机上的com4j从Java代码连接到HP QC 11
从https://github.com/downloads/kohsuke/com4j/com4j-20120426-2.zip下载Com4j artefacts com4j-20120426-2.zip
解压缩。打开命令提示符并导航到解压缩的文件夹。然后运行以下命令在CCCC中创建Wrapper类,其包结构为DDDD。
java -jar tlbimp.jar -o "C:\CCCC" -p "DDDD" "C:\Users\MYACC\AppData\Local\HP\ALM-Client\10\OTAClient.dll"
现在从C:\ Users \ MYACC \ AppData \ Local \ HP \ ALM-Client \ 10复制OTAClient.dll和WebClient.dll并将其保存在Windows / System32文件夹中。
执行完第2步后,您必须在tlbimp.jar所在的位置安装com4j-x86.dll。现在将该DLL复制到Windows / System32文件夹。
现在使用管理员权限,使用命令1 1逐步注册所有3个dll文件,如下所示。
regsvr32 com4j-x86.dll
regsvr32 OTAClient.dll
regsvr32 WebClient.dll
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();
}
在代码中的任何其他内容之前运行它,这是我用来强制任何机器注册它们的。