2009-11-18 30 views
2

我有兩個程序需要集成。一個是Microsoft Access程序。另一個是Java程序。這裏沒有選擇任何一個平臺的靈活性,這些都是現有的複雜程序。從Microsoft Access調用Java程序

Access程序在某些時候需要吐出一行文本,Java程序知道如何將其轉換爲代碼(另一行文本)並接收該代碼。 Java程序只是一個命令行應用程序,打包成一個jar文件,它接受一點文本並吐出另一個文本。

要做到這一點,最簡單的方法是什麼?

我認爲由於安全考慮,訪問不能直接進行系統調用,除非我失去了一些東西?此前,轉換實用程序已打包爲DLL並通過OLE調用。我可以將jar文件打包爲DLL,但看起來很迂迴。這是我能做的最好的嗎?如果還有另外一個類似的問題,只需指出我的看法:在Java和Access的搜索結果中,往往會做相反的事情:通過Java訪問Access數據庫)。

+0

我最終將它打包爲一個DLL。謝謝你的建議。 – Erika 2009-12-01 15:08:30

回答

0

爲什麼不簡單地將Access進程作爲包含現有.jar的Java程序的子進程產生?這樣,您不必執行任何特定於Java/MS的集成,並且可以在新的Java程序中將現有的.jar用作庫。

捕獲Access程序的stdout,在Java中處理它,然後通過標準輸入寫回它?有關更多信息,請參閱Process對象,有關如何使用stdout/err以及指向示例的鏈接的更多信息,請參閱this answer

+0

哇,我想我可以這樣做......當然,這迫使用戶通過Java程序訪問數據庫,而不是直接通過單擊.mdb。我會研究它。 – Erika 2009-11-18 20:48:19

1

如何使用this page上描述的技術。

您可以將提供給WScript.Shell.Exec()函數的字符串更改爲執行Java程序所需的任何命令。然後Java程序的輸出將通過調用ExeA對象的StdOut屬性來調用ReadAll()。