2012-04-24 3 views
1

System.Web 용 스텁을 만들고 내 Java 코드에서 HttpContext를 사용하여 사용할 수있게하려고합니다.System.Web 용 작업 ikvmstub을 만드는 방법

폴더 구조

  • 프로그램 [폴더]
    • iKVM을-7.0.4335.0 [폴더]
    • compile.bat
    • test.java
    • : 나는 다음과 같은 시도
    • IKVM.OpenJDK.Core.dll
    • IKVM.Runtime.dll

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!"); 
    } 
} 

컴파일

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 실행하는 경우 것 compile.bat Java 클래스 test.java 출력 :

Warning IKVMC0100: class "cli.System.Collections.IDictionary" not found Link Error: Method "cli.System.Web.HttpContext.get_Items()Lcli.System.Collection s.IDictionary;" has a return type "cli.System.Collections.IDictionary, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" instead of type "cli.System.Collections.IDictionary (unknown assembly)" as expected by "test "

"C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Web.dll"에 대한 스텁을 직접 만들려고했지만 다음 오류가 발생합니다.

Error: unable to load assembly 'C:\Program Files (x86)\Reference Assemblies\Micr osoft\Framework.NETFramework\v4.0\System.Web.dll' as it depends on a higher version of mscorlib than the one currently loaded

그리고 나는의 그루터기 만들려고 "C : \ Program 파일 (x 86) \ 참조 어셈블리 \ 마이크로 소프트 \ Framework.NETFramework \ 4.0의 \의가 mscorlib.dll"를 얻은 :

ikvmstub "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll" Warning: assembly "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewo rk.NETFramework\v4.0\mscorlib.dll" is ignored as previously loaded assembly "C: \Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll" has the same identit y "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

누구든지 이것을 시도하고 성공 했습니까?

답변

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