Почему IKVM не поддерживает библиотеку Jython?
У нас есть огромный Java-проект, и мы решили перенести часть его в.NET (GUI и т. Д.). Для ускорения процесса мы используем IKVM (JVM для.NET). В большинстве случаев это работает нормально, но когда я дохожу до кода Jython, он застревает, а затем выдает исключение java.lang.NoSuchMethodException
и после PyException
, Это происходит в рамках метода PythonInterpreter.interpreter.exec
, Даже для простого примера:
Джава:
class Main {
public static String printIt() {
PythonInterpreter pi = new PythonInterpreter();;
pi.set("integer", new PyInteger(122));
pi.exec("result = integer * integer");
pi.exec("print('hello!')");
return "hello";
}
}
C#:
var code = Main.printIt();
Какое ограничение или ограничение вызывает исключения? В общем, где найти все ограничения IKVM (уже много искал, ничего относящегося к этому делу не нашел). Благодарю.
ОБНОВЛЕНИЕ: Использование IKVM 8.1 и jython-standalone-2.5.3, JDK 1.8, .NET 4.5
Вот трассировка стека:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "src_python\Util.py", line 2, in <module>
from com.trueship.jyinterface import PyUtil
File "src_python\Util.py", line 2, in <module>
from com.trueship.jyinterface import PyUtil
java.lang.NoClassDefFoundError: junit.framework.TestCase
at Java_java_lang_ClassLoader.defineClass1(Unknown Source)
at IKVM.Internal.AssemblyClassLoader.DefineDynamic(Unknown Source)
at IKVM.Internal.AssemblyClassLoader.LoadDynamic(Unknown Source)
at IKVM.Internal.AssemblyClassLoader.LoadClassImpl(Unknown Source)
...
at org.python.core.Py.runCode(Py.java:1275)
at org.python.core.Py.exec(Py.java:1319)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:207)
at com.trueship.jyinterface.Jyb.findClass(Jyb.java:113)
at com.trueship.jyinterface.Jyb.initUtil(Jyb.java:90)
at com.trueship.jyinterface.Jyb.<init>(Jyb.java:77)
at com.trueship.jyinterface.Jyb.getInstance(Jyb.java:102)
at com.trueship.cordage.orders.JSONOrderParser.parseOrder(JSONOrderParser.java:41)
at com.trueship.cordage.readycloud.ReadyCloudApiClient.getOrders(ReadyCloudApiClient.java:302)
at com.trueship.cordage.readycloud.ReadyCloudApiClient.downloadOrders(ReadyCloudApiClient.java:264)
at cli.ReadyShipper.Windows.MainWindow.DownloadOrders(MainWindow.xaml.cs:75)
at cli.ReadyShipper.Windows.MainWindow.<.ctor>b__1(MainWindow.xaml.cs:49)
at cli.System.Windows.RoutedEventHandlerInfo.InvokeHandler(Unknown Source)
at cli.System.Windows.EventRoute.InvokeHandlersImpl(Unknown Source)