我想为 System.Web 创建一个存根,并在我的 java 代码中使用 HttpContext,然后就可以使用它了。我尝试了以下方法:
文件夹结构
- 程序 [文件夹]
- ikvm-7.0.4335.0 [文件夹]
- 编译.bat
- 测试.java
- IKVM.OpenJDK.Core.dll
- IKVM.Runtime.dll
java类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, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”而不是类型“cli.System.Collections.IDictionary(未知程序集)”,正如“test”所期望的那样"
我还尝试直接为“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Web.dll”创建一个存根,但随后出现此错误:
错误:无法加载程序集“C:\Program Files (x86)\Reference Assemblies\Micr osoft\Framework.NETFramework\v4.0\System.Web.dll”,因为它依赖于比当前加载的更高版本的 mscorlib
然后我尝试为“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll”创建一个存根并得到:
ikvmstub "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll" 警告:程序集 "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework \v4.0\mscorlib.dll" 被忽略,因为先前加载的程序集 "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll" 具有相同的身份 "mscorlib, Version=2.0.0.0, Culture =中性,PublicKeyToken=b77a5c561934e089"
有没有人试过这个并成功了?