2008-09-26 2 views
9

Можно ли вызывать COM API с Java (в частности, OTA API HP/Mercury Quality Center)? Если да, то какой лучший способ?Можно ли вызвать COM API с Java?

Является ли что-то вроде JACOB подходящим?

фрагменты кода будут полезны для основы :-)

ответ

9

Иакова: да, http://sourceforge.net/projects/jacob-project/ активного проект, который будет набор вашей цели очень хорошо.

вы можете увидеть несколько примеров: http://jacob-project.wiki.sourceforge.net/Event+Callbacks

, но если вы хотите что-то более испытанным и готовы платить деньги, а затем пойти на http://www.nevaobject.com/_docs/_java2com/java2com.htm.

1

J-Interop является мост Java-COM: j-Interop. Он написан на чистой Java и лицензирован под LGPL v3. Он использует проводной протокол DCOM для вызова COM-объектов в отличие от подхода JNI, используемого JACOB.

2

может быть, вы должны взглянуть на http://qctools4j.sourceforge.net/ это библиотека Java используется qclylyn (http://sourceforge.net/apps/mediawiki/qcmylyn/index.php?title=Main_Page) для извлечения дефектов из QC.

к сожалению COM мост не работает для Linux, как он загружает Яаков DLLS

1

Вы можете использовать J-Integra COM2JAVA инструмент. Средство com2java генерирует классы и интерфейсы Java «proxy», которые соответствуют классам и интерфейсам, содержащимся в библиотеке типа COM. Он эффективно генерирует Java API, который вы можете использовать для доступа к COM-компоненту из Java.

2

после сопоставления всех вышеперечисленных, никто не был полностью удовлетворительным.

наиболее полное решение в https://github.com/java-native-access/jna

сейчас.

Он поддерживает,

  • получает интерфейс к работающему COM объекту
  • начинает новый объект COM и возвращает его интерфейс
  • вызова методов COM и возвращающиеся результаты
  • обработки опционального отдельный COM поток
  • ComEventCallbacks
  • 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(); 
Смежные вопросы