2008-09-26 30 views
9

Có thể gọi API COM từ Java (cụ thể là API OTA của Trung tâm Chất lượng HP/Mercury) không? Nếu vậy, cách tốt nhất là gì?Có thể gọi API COM từ Java không?

Có giống như JACOB thích hợp không?

mảnh Mã sẽ rất hữu ích cho những điều cơ bản :-)

Trả lời

1

j-Interop là cầu nối Java-COM: j-Interop. Nó được viết bằng Java thuần túy và được cấp phép theo LGPL v3. Nó sử dụng giao thức dây DCOM để gọi các đối tượng COM trái với cách tiếp cận JNI được JACOB sử dụng.

2

có thể bạn nên xem http://qctools4j.sourceforge.net/ đó là thư viện java được qclylyn sử dụng (http://sourceforge.net/apps/mediawiki/qcmylyn/index.php?title=Main_Page) để truy xuất lỗi từ QC.

tiếc là cầu COM không làm việc cho linux như nó tải jacob dlls

1

Bạn có thể sử dụng J-Integra cụ COM2JAVA. Công cụ com2java tạo ra các lớp và giao diện Java "proxy" tương ứng với các lớp và các giao diện chứa trong một thư viện kiểu COM. Nó có hiệu quả tạo ra một API Java mà bạn có thể sử dụng để truy cập một thành phần COM từ Java.

2

sau khi so sánh tất cả những điều trên, không ai hoàn toàn thỏa đáng.

giải pháp hoàn thiện nhất là trong https://github.com/java-native-access/jna

bây giờ.

Nó hỗ trợ,

  • nhận được giao diện cho một đối tượng COM chạy
  • bắt đầu một đối tượng COM mới và trở về giao diện của nó
  • gọi phương pháp COM và trả kết quả
  • xử lý tùy chọn chủ đề COM riêng
  • ComEventCallbacks
  • RunninObject truy vấn Bảng
  • lowlevel COM sử dụng
  • util/cao mức java Proxy trừu tượng

Ví dụ:

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(); 
Các vấn đề liên quan