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.