我想为System.Web创建一个存根,并在我的java代码中使用HttpContext,然后才能使用它。我尝试过以下方法:
文件夹结构
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"
有没人试过这个并且成功了?
答案 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