Linux中使用IKVM调用.NET Mono的Java应用程序
我想举一个简单的例子,java调用linux上使用mono创建的.net程序集 在名为MonoLib的类库项目中,我有一个非常简单的C#类,名为MyClassLinux中使用IKVM调用.NET Mono的Java应用程序,java,c#,linux,mono,ikvm,Java,C#,Linux,Mono,Ikvm,我想举一个简单的例子,java调用linux上使用mono创建的.net程序集 在名为MonoLib的类库项目中,我有一个非常简单的C#类,名为MyClass using System; namespace MonoLib { public class MyClass { public static void TestDotNet() { Consol
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
正如上面所解释的
它创建了MonoLib.jar
然后我想在纯java类Demo.js中测试MonoLib.jar
import cli.MonoLib.*;
public class Demo {
public static void main(String[] args) {
MyClass.TestDotNet();
}
}
当我尝试使用命令编译它时:
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 not found”
这就是为什么我需要扩展这个命令
javac-classpath MonoLib.jar Demo.java
将mscorlin.jar添加到类路径我可以用一个命令添加多个JAR吗?
因为我还需要添加mscorlib.jar
我尝试将它们添加到一个名为MonoTest的文件夹中,并运行此命令
javac -classpath /home/user/MonoTest/* Demo.java
结果是
javac:无效标志:/home/user/MonoTest/mscorlib.jar
用法:javac
使用-help获取可能选项的列表
EDIT2
理想情况下,我希望有一个类似于桥接类的类,它为java提供所有.net功能,如:
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编译,就可以在任何没有IKVM的java应用程序中使用
EDIT3
我发现使用IKVMTUB生成的所有JAR只能在.net之上的IKVM虚拟机上使用。这意味着我的所有java代码都必须在IKVM运行时中执行?是这样的,有什么限制吗?我应该改变我的平台,从.net调用几个方法吗?对我来说,它似乎不是互操作性。您还需要将mscorlib.jar添加到类路径中。这是mscorlib的存根。我已经创建了mscorlib.jar,现在如何添加它?当我使用export CLASSPATH=“/home/user/mscorlib.jar”将其添加到类路径时,它仍然报告相同的错误。类路径以前是空行。请看一看我的问题,如果我能在“我可以用一个命令添加多个jar吗?”@eomeroff您可以像其他jar文件一样添加它:javac-classpath mscorlib.jar:MonoLib.jar Demo.javaThank。再想想如何运行它?ikvm-classpath.:MonoLib.jar演示失败。NoClassFoundError我相信它仍然需要mscorlib。jar@eomeroffjavac和ikvm是不同的东西。为这个新问题提出一个新问题。