如何为System.Web创建一个有效的ikvmstub

时间:2012-04-24 10:06:58

标签: ikvm

我想为System.Web创建一个存根,并在我的java代码中使用HttpContext,然后才能使用它。我尝试过以下方法:

文件夹结构

  • 程序[文件夹]
    • ikvm-7.0.4335.0 [文件夹]
    • 的compile.bat
    • test.java
    • IKVM.OpenJDK.Core.dll
    • IKVM.Runtime.dll

java class test.java

import cli.System.Web.HttpContext;

public class test
{  
    public static void main(String args[])
    {
       HttpContext.get_Current().get_Items().get_Item("MyKey");
       System.out.println("Hello World!");
    }
}

编译compile.bat

ikvm-7.0.4335.0\bin\ikvmstub mscorlib
ikvm-7.0.4335.0\bin\ikvmstub System.Web
javac test.java -classpath mscorlib.jar;System.Web.jar
ikvm-7.0.4335.0\bin\ikvmc -target:exe -reference:System.Web.dll test.class
test.exe
pause

如果我运行compile.bat,它将输出:

  

警告IKVMC0100:类“cli.System.Collections.IDictionary”没有   发现链接错误:方法   “cli.System.Web.HttpContext.get_Items()Lcli.System.Collection   s.IDictionary;“有一个返回类型”cli.System.Collections.IDictionary,   mscorlib,版本= 2.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089“而不是类型   “cli.System.Collections.IDictionary(未知程序集)”正如预期的那样   “测试”

我还尝试直接为“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Web.dll”创建存根,但后来我收到此错误:< / p>

  

错误:无法加载程序集'C:\ Program Files(x86)\ Reference   Assemblies \ Micr osoft \ Framework.NETFramework \ v4.0 \ System.Web.dll'as   它取决于mscorlib的更高版本而不是当前的版本   装载

然后我尝试为“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll”创建一个存根,并得到:

  

ikvmstub“C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.0 \ mscorlib.dll中”   警告:程序集“C:\ Program Files(x86)\ Reference   Assemblies \ Microsoft \ Framewo rk.NETFramework \ v4.0 \ mscorlib.dll“是   被忽略为先前加载的程序集“C:   \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ mscorlib.dll“有   相同的身份y“mscorlib,Version = 2.0.0.0,Culture = neutral,   公钥= b77a5c561934e089"

有没人试过这个并且成功了?

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。我没有引用mscorlib.dll,因为我认为它是自动引用的。因此,如果我更改以下行,它将起作用:

  

ikvm-7.0.4335.0 \ bin \ ikvmc -target:exe -reference:System.Web.dll test.class

ikvm-7.0.4335.0\bin\ikvmc -target:exe -reference:mscorlib.dll -reference:System.Web.dll test.class