Another of those hidden things about J# -- the JbImp tool, which takes .class files and spits out J# assemblies. Just what I wanted, but was looking in the general freeware community for.
Now the full scala-library.jar has a lot of post-J# Java API calls, but by cutting out a lot of the code I can get
>"\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\Jbimp.exe" /t:library /usestubrefs /out:scala-lib.dll /recurse *.class
to work on the remainder of it, and then
>"\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\Jbimp.exe" /t:library /usestubrefs /r:..\JavaLayer.dll ..\scala-lib.dll /out:SClass.dll /recurse *.class
And then build an IronPython project against it and get…
>PythonLayer.exe In class com_ravnaandtines.jlayer.JClass1.doSomething(), printing from Jython 11 In class com_ravnaandtines.jlayer.JClass1.doSomething(), printing Hello Babel! Traceback (most recent call last): File scala-lib, line unknown, in .cctor File vjslib, line unknown, in checkAndThrowException File src\Program.py, line 24, in Initialize File , line 0, in NonDefaultNew##27 File , line 0, in .ctor##29 File SClass, line unknown, in .ctor SystemError: The type initializer for 'scala.Console$' threw an exception.
which is progress, and most of what the JVM version does; but as this
private int len; private JClass1 in = new JClass1(); public SClass(String token) { len = in().doSomething(token); Console$.MODULE$.println(BoxesRunTime.boxToInteger(len())); }
is the relevant part of the SClass code decompiled, the failure means that although it has executed some Scala derived code, it has fallen over at the first sniff of runtime.
I hope that a more measured winnowing of the runtime will fix this. But not tonight.
No comments:
Post a Comment