doppio icon indicating copy to clipboard operation
doppio copied to clipboard

JPython and JRuby REPL do not work due to JLine changes

Open jvilk opened this issue 10 years ago • 1 comments

I'm not sure why, but JLine2 tries to construct a UnixTerminal for doppio, despite our default value for jline.terminal. There's no evidence in the codebase that anything has changed, so I'll need to do a JLine investigation.

jvilk avatar Sep 30 '15 18:09 jvilk

Jython stack trace:

$ ./doppio-fast-dev -jar ~/Code/doppio-demo/demo_files/programs/jython-standalone-2.7.0.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at doppio.JarLauncher.main(JarLauncher.java:34)
Caused by: java.lang.Error: doppio is not a supported OS platform.
    at java.lang.UNIXProcess$Platform.get(UNIXProcess.java:164)
    at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:168)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at org.python.jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:196)
    at org.python.jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:186)
    at org.python.jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:181)
    at org.python.jline.internal.TerminalLineSettings.get(TerminalLineSettings.java:74)
    at org.python.jline.internal.TerminalLineSettings.<init>(TerminalLineSettings.java:53)
    at org.python.jline.UnixTerminal.<init>(UnixTerminal.java:31)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.python.jline.TerminalFactory.getFlavor(TerminalFactory.java:166)
    at org.python.jline.TerminalFactory.create(TerminalFactory.java:81)
    at org.python.jline.TerminalFactory.get(TerminalFactory.java:158)
    at org.python.jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
    at org.python.util.JLineConsole.install(JLineConsole.java:107)
    at org.python.core.Py.installConsole(Py.java:1517)
    at org.python.core.PySystemState.initConsole(PySystemState.java:1200)
    at org.python.core.PySystemState.doInitialize(PySystemState.java:1060)
    at org.python.core.PySystemState.initialize(PySystemState.java:974)
    at org.python.core.PySystemState.initialize(PySystemState.java:930)
    at org.python.core.PySystemState.initialize(PySystemState.java:925)
    at org.python.util.jython.run(jython.java:263)
    at org.python.util.jython.main(jython.java:142)
    ... 5 more

JLine's example program works in Doppio, and I manually changed it to invoke TerminalFactory.create(), and it didn't fail like Jython... so I'll have to see what Jython/JRuby are doing...

jvilk avatar Sep 30 '15 22:09 jvilk