2009-02-04 58 views
47

我是入門級程序員,請在您的回覆中描述。在C#中使用.jar java庫API?

我想在我的C#.net應用程序中使用作爲.jar文件給出的Java API。我不太瞭解Java,但是當我嘗試運行它時,這個.jar文件顯示「沒有主類清單屬性」,所以這意味着它是一個庫?這個Java API還帶有一個.java文件,它顯示瞭如何使用這個庫,但是我看不到.jar裏面的代碼。

我在這個網站上發現了this question,其中一個答案是:「用簡單的方法,你可以將你的java類打包成jar文件,然後在C#中使用Process類來執行和映射IO流。我對C#中的Process類非常熟悉,但我不明白我如何使用它在我的C#.net項目中使用Java庫。

這可能嗎?還是那個答案不正確?

如果是這樣,你能解釋我如何在我的C#應用​​程序中使用.jar庫。

回答

65

你可以使用IVKM.Net。 IVKM.NET包含一個名爲ikvmc的應用程序。下面是這個工具的文檔:

http://www.ikvm.net/userguide/ikvmc.html

要使用它編譯Java代碼放到一個瓶子裏。

然後運行ikvmc程序:

ikvmc myCode.jar

如果你的罐子包含一個main()函數,它會被轉換成可在CLR上運行的exe文件。否則,它將被轉換爲dll的。要在您的項目中使用dll,只需將它們添加爲Visual Studio中的引用,並且可以在.Net應用程序中訪問Java中可用的相同API。

您還可以包含來自ikvmc的IKVM.GNU.Classpath.dll dll,並在您的應用程序中使用標準java類庫。

+0

謝謝我會試試看。一旦我有.dll文件,並將其導入到我的項目中,我應該使用Pinvoke調用該庫的函數? – timmyg 2009-02-04 17:49:52

+1

您不需要使用pinvoke。你應該可以簡單地調用api,就像你用C#編寫原始代碼一樣。 – 2009-02-04 18:10:10

4

看看IKVM ...它有一些工具可以爲你提供某種程度的互操作性。當你說Java API時,我假設你想從jar中調用一些功能而不是僅僅執行它