2008-09-26 21 views
9

क्या जावा से एक COM एपीआई (विशेष रूप से एचपी/बुध गुणवत्ता केंद्र ओटीए एपीआई) को कॉल करना संभव है? यदि हां, तो सबसे अच्छा तरीका क्या है?जावा से एक COM एपीआई कॉल करना संभव है?

जेएसीओबी की तरह कुछ उचित है?

कोड टुकड़े मूल बातें के लिए मददगार होगा :-)

उत्तर

9

याकूब: हाँ, http://sourceforge.net/projects/jacob-project/ एक सक्रिय परियोजना है कि उद्देश्य बहुत अच्छी तरह से सूट करेगा है।

आप एक से अधिक उदाहरण देख सकते हैं: http://jacob-project.wiki.sourceforge.net/Event+Callbacks

लेकिन अगर आप कुछ है कि और अधिक परीक्षण किया जाता है चाहते हैं और पैसे का भुगतान करने को तैयार हैं, तो http://www.nevaobject.com/_docs/_java2com/java2com.htm के लिए जाते हैं।

4

मैं यह भी पाया है यह उपयोगी होने के लिए: com4j

1

j-इंटरॉप है जावा-कॉम ब्रिज: j-Interop। यह शुद्ध जावा में लिखा गया है और एलजीपीएल वी 3 के तहत लाइसेंस प्राप्त है। यह जेएसीओबी द्वारा उपयोग किए गए जेएनआई दृष्टिकोण के विपरीत COM ऑब्जेक्ट्स को कॉल करने के लिए डीसीओएम वायर प्रोटोकॉल का उपयोग करता है।

2

हो सकता है आप यह qclylyn (http://sourceforge.net/apps/mediawiki/qcmylyn/index.php?title=Main_Page) द्वारा इस्तेमाल किया क्यूसी से दोष को पुनः प्राप्त करने के लिए एक जावा पुस्तकालय है http://qctools4j.sourceforge.net/ पर एक नजर है चाहिए।

दुर्भाग्य कॉम पुल लिनक्स के लिए काम नहीं करता है के रूप में यह लोड करता याकूब DLLs

1

आप जे-एकीकरण COM2JAVA उपकरण का उपयोग कर सकते हैं। com2java टूल जावा "प्रॉक्सी" कक्षाएं और इंटरफेस उत्पन्न करता है जो COM टाइप लाइब्रेरी में मौजूद कोक्लास और इंटरफेस से मेल खाते हैं। यह प्रभावी रूप से जावा एपीआई उत्पन्न करता है जिसका उपयोग आप जावा से COM घटक तक पहुंचने के लिए कर सकते हैं।

2

उपरोक्त सभी की तुलना के बाद, कोई भी पूरी तरह संतोषजनक नहीं था।

सबसे पूर्ण समाधान https://github.com/java-native-access/jna

अब में है।

यह समर्थन करता है,

  • एक चल COM वस्तु
  • के लिए इंटरफ़ेस हो रही एक नया COM वस्तु शुरू करने और लौटने इसके इंटरफेस
  • कॉम तरीकों और लौटने परिणाम
  • वैकल्पिक अलग कॉम धागा निपटने
  • बुला
  • ComEventCallbacks
  • RunninObjectTable प्रश्न
  • lowlevel कॉम उपयोग
  • util/उच्च स्तरीय जावा प्रॉक्सी अमूर्त

जैसे

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();