Java 7: COM-API funktioniert nicht mit Quality Center (OTAClient.dll), funktioniert aber mit Java 6

8

Wir laufen auf Windows 7 Enterprise, SP1, 64bit. Wir haben gerade Java 7 auf all unseren Rechnern installiert, was folgendes Problem verursacht:

Wenn mein Programm versucht, mit der OpenTestArchitecture-API von Quality Center zu kommunizieren, kann es die ActiveX-Komponente nicht erstellen. Ich verwende JACOB als meine Java-COM-Bibliothek. Das Aktualisieren auf die neueste Version von JACOB ändert nichts.

Der folgende Test funktioniert mit jdk1.6.0_24 (32 Bit), schlägt aber mit jdk1.7.0_04 (32 Bit) fehl:

%Vor%

jdk1.6.0_24 Ausgabe:

%Vor%

jdk1.7.0_04 Ausgabe:

%Vor%

Die ursprüngliche ComFailException-Nachricht lautet "Objekt kann nicht gemeinsam erstellt werden", aber ich habe den folgenden Code in der jacob Dispatch.cpp bearbeitet: (Ich habe CoCreateInstance nicht berührt, ich wollte nur wissen, was das HRESULT war )

%Vor%

Hat jemand eine Ahnung, was das Problem sein könnte? Der einzige Unterschied ist, dass ich zwischen der Laufzeit von Java 6 und Java 7 wechsle.

Vielen Dank für Ihre Hilfe!

PS: Excel funktioniert mit beiden Versionen und ein Wechsel zur com4j-Bibliothek ändert nichts. (Ich habe einen com4j-Test, habe ihn aber nicht gepostet, weil ich schon genug Code gepostet habe)

Bearbeiten: Derselbe Test funktioniert mit Windows XP, SP3 und Java 7.

    
r3zn1k 11.05.2012, 08:28
quelle

1 Antwort

2

Jacob DLL ist mit jvm.dll (Methoden und Strukturen) von der JRE verbunden. Also meine Vermutung ist, dass die Jacob-DLL aus Quellen mit Java 7 kompiliert werden sollte, um richtig in Java 7 JRE zu laden.

Sie sind nicht allein , aber ich denke, zu wenige Leute laufen bereits Java 7 ...

Update: Ich schlage vor, dass Sie zuerst mit Process Monitor nachfragen, falls dies der Fall ist sind einige Bibliotheks- oder Systemaufrufe in Ihrem Java-Prozess fehlgeschlagen, bevor Sie den Prozess selbst in einem Debugger ausgeführt haben ... Vielleicht ist OpenJDK 7 möglicherweise eine Option, um es zu versuchen, es sollte dann einfacher zu debuggen sein, zumindest um das Problem zu diagnostizieren .

    
Yves Martin 15.05.2012 10:18
quelle