Можно ли вызвать COM API из Java?
-
02-07-2019 - |
Вопрос
Можно ли вызвать COM API из Java (в частности, OTA API HP/Mercury Quality Center)?Если да, то какой лучший способ?
Подходит ли что-то вроде JACOB?
Фрагменты кода будут полезны для основ :-)
Решение
Джейкоб:да, http://sourceforge.net/projects/jacob-project/ — это активный проект, который вполне соответствует вашим целям.
вы можете увидеть несколько примеров: http://jacob-project.wiki.sourceforge.net/Event+Callbacks
но если вы хотите что-то более проверенное и готовы платить деньги, тогда выбирайте http://www.nevaobject.com/_docs/_java2com/java2com.htm.
Другие советы
Я также нашел это полезным: com4j
Вы можете использовать Джавин > http://jawinproject.sourceforge.net/
или попробуйте инструкцию http://docs.rinet.ru/ZhPP/ch20.htm
Арун Кай Арунки
возможно, тебе стоит взглянуть на http://qctools4j.sourceforge.net/это Java-библиотека, используемая qclylyn (http://sourceforge.net/apps/mediawiki/qcmylyn/index.php?title=Main_Page) для извлечения дефектов из QC.
к сожалению, COM-мост не работает для Linux, поскольку он загружает библиотеки Джейкоба
после сравнения всего вышеперечисленного ни один из них не оказался полностью удовлетворительным.
самое полное решение находится вhttps://github.com/java-native-access/jna
сейчас.
Он поддерживает,
- получение интерфейса к работающему COM-объекту
- запуск нового COM-объекта и возврат его интерфейса
- вызов методов COM и возврат результатов
- необязательная отдельная обработка COM-потоков
- Обратные вызовы ComEvent
- Запросы RunninObjectTable
- низкоуровневое использование COM
- util / абстракция Java-прокси высокого уровня
Например.
MsWordApp comObj = this.factory.createObject(MsWordApp.class);
Documents documents = comObj.getDocuments();
_Document myDocument = documents.Add();
String path = new File(".").getAbsolutePath();
myDocument.SaveAs(path + "\\abcdefg", WdSaveFormat.wdFormatPDF);
comObj.Quit();
j-Interop — это мост Java-COM: j-Интероп.Он написан на чистом Java и распространяется под лицензией LGPL v3.Для вызова COM-объектов он использует проводной протокол DCOM, в отличие от подхода JNI, используемого JACOB.
Вы можете использовать J-Integra COM2JAVA инструмент.Инструмент com2java генерирует «прокси»-классы и интерфейсы Java, которые соответствуют компонентным классам и интерфейсам, содержащимся в библиотеке типов COM.Он эффективно генерирует Java API, который вы можете использовать для доступа к COM-компоненту из Java.