HP ALM OTAClient.dll несовместим с 64-битной ОС

Я добавил код для подключения и создать дефект в HP ALM через Eclipse(Java), в котором он связывается с OTAClient и com4j.jar. Я успешно смог подключиться и создать дефект в 32-битной ОС, но не смог подключить его в 64-битной ОС.

Я обхожу некоторые решения, размещенные здесь, и, хотя, следуя решению, я не смог найти решение. [1]: com4j в 64-битной Windows.

Вот мой код

import com.ClassFactory;
import com.IBug;
import com.IBugFactory;
import com.ITDConnection;
import com4j.Variant;


public class AlmQc {
public static void main(String args[])
{
    login();
}

public static void createDefect(ITDConnection connection)  {

    IBugFactory  bugFactory = (IBugFactory) connection.bugFactory().queryInterface(IBugFactory.class);
    IBug bug = (bugFactory.addItem(new Variant(Variant.Type.VT_NULL))).queryInterface(IBug.class);

    bug.assignedTo("Administrator");
    bug.detectedBy("Administrator");
    bug.status("New");
    bug.project("Banking");
    bug.summary("Created by Esh");
    //bug.priority("Low");
    bug.field("BG_SEVERITY", "2-Medium");
    bug.field("BG_DETECTION_DATE", "2016-01-27 00:00:00");
    bug.post();

}

public static void login()
{

    String url = "http://almqc:8080/qcbin";


    String username = "Administrator";
    String password = "********";

    String domain = "DEFAULT";

    String project = "Banking";

    ITDConnection itdc = ClassFactory.createTDConnection();

    itdc.initConnectionEx(url);

    itdc.connectProjectEx(domain, project, username, password);
    System.out.println(itdc.projectConnected());
    createDefect(itdc);
}

Во время работы над кодом в Eclipse я обнаружил следующую ошибку.

Exception in thread "main" com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
at com4j.ComThread.execute(ComThread.java:203)
at com4j.Task.execute(Task.java:25)
at com4j.COM4J.createInstance(COM4J.java:97)
at com4j.COM4J.createInstance(COM4J.java:72)
at com.mercury.qualitycenter.otaclient.ClassFactory.createTDConnection(Unknown Source)
at Sample.main(Sample.java:18)
Caused by: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
at com4j.Native.createInstance(Native Method)
at com4j.COM4J$CreateInstanceTask.call(COM4J.java:117)
at com4j.COM4J$CreateInstanceTask.call(COM4J.java:104)
at com4j.Task.invoke(Task.java:51)
at com4j.ComThread.run0(ComThread.java:153)
at com4j.ComThread.run(ComThread.java:134)

Пожалуйста, предоставьте любой обход или решение, которое было успешно выполнено на 64-битной ОС.

3 ответа

Вам нужно будет сделать 32-битную версию вашей программы, которая может использовать 32-битную версию OTACLIENT.DLL. Я не знаю о 64-битной версии OTACLIENT.DLL.

Проблема не в 64-битной ОС, а в 64-битной JRE. Если вы используете IDE, укажите вашей библиотеке JRE (путь сборки) на 32-битную JRE (папку bin), иначе вы также можете установить 32-битную JRE на 64-битные машины и запускать в этой среде.

OTAClient - это чистый Windows DLL, даже если вы используете Java, вам нужно зарегистрировать его на Windows Machine. Лучший способ извлечь из этого максимум - использовать его с.net, в таких случаях вы можете создать Windows / веб-сервис, доступный через http. С помощью этого сервиса вы можете разработать код на C# для выполнения операций с OTAClient.dll. Используя сервис web/rest/wcf вы можете общаться с разработанным сервисом. Gr8 часть этого позволяет запускать 64-битную архитектуру. IIS также позволяет с опцией "Включить 32-битное приложение" на уровне пула приложений.

Другие вопросы по тегам