2012-04-24 6 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

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

コンパイル

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実行した場合の出力は以下となります。

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:\プログラムファイル(x86の)\リファレンスアセンブリ\マイクロソフト\ Framework.NETFramework \ V4.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 

関連する問題