0

我们遇到了一个使用 ikvmc 从 jar 文件转换而来的 .NET dll 的问题。当尝试实例化“My”时,我们看到下面的错误(这是位于“ikvm.extensions”中的扩展方法“printStackTrace”的输出,因为这似乎是了解 IKVM 的人们正在寻找的东西)。

Java代码中的“App”类继承自Hashtable。此外,当我们使用 ikvmc 从同一个 jar 文件(这次使用清单文件中设置的 Main 方法)生成可执行文件(而不是 dll)并运行该 exe 文件时,一切正常。“我的”在 java 代码的 Main 方法中被实例化,一切正常。

java.lang.ExceptionInInitializerError
    at App.<init>(App.java)
    at My.<init>(My.java:107)
    at cli.Tests.Program.Main(Program.cs:58)
    at cli.System.AppDomain._nExecuteAssembly(Unknown Source)
    at cli.System.AppDomain.ExecuteAssembly(Unknown Source)
    at cli.Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly(Unknown Source) Caused by: cli.System.MissingMethodException: Method not found: 'Void java.util.Hashtable.__<clinit>()'.
    at cli.Tests.Program.Main(Program.cs:65)
    ... 3 more

有什么想法我们可以采取不同的方式来解决这个问题吗?如果您想知道,我们通过 Nuget 包含了 IKVM,因此包含了 28 个 IKVM 程序集,是的。

4

1 回答 1

1

我能够解决这个问题。如此处所述(使用 IKVM 的 MissingMethodException),ikvmc 版本必须与您在 .NET 项目中使用的程序集版本匹配。

于 2015-05-02T15:39:08.200 回答