2014-06-06 29 views
2

我想舉一個簡單的Java調用.net程序集的例子,該程序是在linux上用mono創建的。在Linux中用IKVM調用.NET Mono的Java應用程序

我有一個名爲MyClass的這個非常簡單的C#類ClassLibrary項目,稱爲MonoLib

using System; 

    namespace MonoLib 
    { 
     public class MyClass 
     {   
      public static void TestDotNet() 
      { 
       Console.WriteLine ("Hi I am from .Net"); 
      } 
     } 
    } 

爲了使用我進入命令

ikvmstub Desktop/Mono/MonoLib/MonoLib/bin/Debug/MonoLib.dll 

類的功能,因爲它是在http://mono-project.com/Java

解釋

其中創建MonoLib.jar

然後我想測試MonoLib.jar名爲Demo.js

import cli.MonoLib.*; 
public class Demo { 
     public static void main(String[] args) { 
      MyClass.TestDotNet(); 
     } 
} 

純Java的類當我嘗試用命令編譯:

javac -classpath MonoLib.jar Demo.java 

我得到這個錯誤:

Demo.java:4: cannot access cli.System.Object 
class file for cli.System.Object not found 
      MyClass.TestDotNet(); 
       ^

請告訴我我做錯了什麼是正確的方法。

EDIT1:

從下面的回答我的結論是,問題是,我的Java應用程序沒有看到mscorlib程序的功能因此它說:「cli.System.Object未找到」 這就是爲什麼我要擴展這個命令

的javac -classpath MonoLib.jar Demo.java

添加mscorlin.jar到類路徑中。 我可以用一個命令添加多個罐子嗎? 因爲我還需要添加mscorlib.jar。

我試圖將它們加入到所謂的MonoTest一個文件夾中,並運行此命令

javac -classpath /home/user/MonoTest/* Demo.java 

結果是

的javac:無效的標誌:/home/user/MonoTest/mscorlib.jar 用法:javac的 使用-help爲可能的選項

EDIT2

列表210

Idealy我想有這樣的外立面全部.NET功能爲像Java橋類:

import cli.MonoLib.*; 
    public class Demo { 
      public static void DotNetViaJava { 
       MyClass.TestDotNet(); 
      } 
    } 



public class DemoTest { 
     public static void main(String[] args){ 
      Demo.DotNetViaJava(); 
     } 
} 

我需要在這個例子中Demo.java Java類,一旦編譯IKVM可以在任何Java中使用沒有IKVM的應用程序。

EDIT3

我發現,隨着ikvmstub產生的所有jar文件只能在IKVM vistual機器上的.NET的頂部使用。這意味着我所有的java代碼都必須在IKVM運行時執行?是這樣,有什麼限制,我應該改變我的平臺調用幾個方法形式.NET。它看起來不像我的互操作性。

回答

2

您還需要將mscorlib.jar添加到類路徑中。這是mscorlib的一個存根。

+0

我已經創建mscorlib.jar現在如何添加它?當我通過導出CLASSPATH =「/ home/user/mscorlib.jar」將它添加到CLASSPATH時,它仍會報告相同的錯誤。班級路徑之前是空行。 – eomeroff

+0

請看看我的問題,如果我能得到有關「我可以用一個命令添加多個罐子?」的答案,我會很滿意。 – eomeroff

+0

@eomeroff像其他任何jar文件一樣添加它:javac -classpath mscorlib.jar:MonoLib.jar Demo.java – Horcrux7

相關問題