1

System.Webのスタブを作成し、JavaコードでHttpContextを使用して、それを使用できるようにします。私は以下を試しました:

フォルダ構造

  • プログラム[フォルダ]
    • 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!");
    }
}

コンパイル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;" 「test。 「」

また、「C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Web.dll」のスタブを直接作成しようとしましたが、次のエラーが発生します。

エラー:アセンブリ'C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ 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"が同じID"mscorlib、Version = 2.0.0.0、Cultureを持っているため無視されます=ニュートラル、PublicKeyToken = b77a5c561934e089 "

誰かがこれを試し、成功しましたか?

4

1 に答える 1

0

私は自分で答えを見つけました。mscorlib.dll は自動的に参照されると思っていたので、参照していませんでした。したがって、次の行を変更すると機能します。

ikvm-7.0.4335.0\bin\ikvmc -ターゲット:exe -参照:System.Web.dll test.class

ikvm-7.0.4335.0\bin\ikvmc -target:exe -reference:mscorlib.dll -reference:System.Web.dll test.class
于 2012-04-25T08:15:05.523 に答える