У нас возникла проблема с DLL .NET, которая была преобразована из файла jar с помощью ikvmc. При попытке создать экземпляр «My» мы видим ошибку ниже (это результат метода расширения printStackTrace, находящегося в «ikvm.extensions», поскольку, похоже, это то, что ищут люди, знающие о IKVM).
Класс «App» в коде Java наследуется от Hashtable. Кроме того, когда мы используем ikvmc для создания исполняемого файла (а не dll) из того же файла jar (на этот раз с помощью метода Main, установленного в файле манифеста) и запускаем этот exe-файл, все работает нормально. «My» создается в методе Main Java-кода, и все работает нормально.
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
Есть идеи, что мы можем сделать по-другому, чтобы обойти это? Если вам интересно, мы включили IKVM через Nuget, поэтому включены 28 сборок IKVM, да.