Closed donghanglin closed 8 years ago
@donghanglin oh jeez. I had not realized that this had gotten out of date. Sorry for the trouble, Thanks for the heads up. Ill give it a shot and update the readme soon.
Super handy link as well :-)
I had trouble reproducing this. Can you let me know the error?
I am going to update the readme anyway because your link seems better than what I got there anyway and I tested the jar from there
I use jdk-9 b99.
When working with the former kulla.jar,
Exception will raise after executing java -jar kulla.jar
Exception in thread "main" java.lang.UnsupportedOperationException: Wrong compiler, must be run with full JDK 9.
at impl.TaskFactory.<init>(TaskFactory.java:74)
at impl.EvalProcessingImpl.<init>(EvalProcessingImpl.java:61)
at api.EvalProcessing.create(EvalProcessing.java:50)
at tool.Repl.resetState(Repl.java:323)
at tool.Repl.start(Repl.java:213)
at tool.Repl.start(Repl.java:208)
at tool.Repl.main(Repl.java:198)
If run ipython console --kernel java
, the output error is:
---------------------------------------------------------------------------
EOF Traceback (most recent call last)
/usr/lib/python2.7/runpy.pyc in _run_module_as_main(mod_name='__main__', alter_argv=0)
160 sys.argv[0] = fname
161 return _run_code(code, main_globals, None,
--> 162 "__main__", fname, loader, pkg_name)
fname = '/home/vagrant/java9_kernel/javakernel/__main__.py'
loader = <pkgutil.ImpLoader instance at 0x7fe628058cf8>
pkg_name = ''
163
164 def run_module(mod_name, init_globals=None,
/usr/lib/python2.7/runpy.pyc in _run_code(code=<code object <module> at 0x7fe62804a4b0, file "/...ant/java9_kernel/javakernel/__main__.py", line 1>, run_globals={'IPKernelApp': <class 'ipykernel.kernelapp.IPKernelApp'>, 'JavaKernel': <class 'kernel.JavaKernel'>, '__builtins__': <module '__builtin__' (built-in)>, '__doc__': None, '__file__': '/home/vagrant/java9_kernel/javakernel/__main__.py', '__loader__': <pkgutil.ImpLoader instance>, '__name__': '__main__', '__package__': ''}, init_globals=None, mod_name='__main__', mod_fname='/home/vagrant/java9_kernel/javakernel/__main__.py', mod_loader=<pkgutil.ImpLoader instance>, pkg_name='')
70 __loader__ = mod_loader,
71 __package__ = pkg_name)
---> 72 exec code in run_globals
code = <code object <module> at 0x7fe62804a4b0, file "/home/vagrant/java9_kernel/javakernel/__main__.py", line 1>
run_globals = {'__builtins__': <module '__builtin__' (built-in)>, '__file__': '/home/vagrant/java9_kernel/javakernel/__main__.py', 'JavaKernel': <class 'kernel.JavaKernel'>, '__package__': '', 'IPKernelApp': <class 'ipykernel.kernelapp.IPKernelApp'>, '__name__': '__main__', '__loader__': <pkgutil.ImpLoader instance at 0x7fe628058cf8>, '__doc__': None}
73 return run_globals
74
/home/vagrant/java9_kernel/javakernel/__main__.py in <module>()
7 except:
8 from IPython.kernel.zmq.kernelapp import IPKernelApp
----> 9 IPKernelApp.launch_instance(kernel_class=JavaKernel)
global IPKernelApp.launch_instance = <bound method MetaHasTraits.launch_instance of <class 'ipykernel.kernelapp.IPKernelApp'>>
global kernel_class = undefined
global JavaKernel = <class 'kernel.JavaKernel'>
/usr/local/lib/python2.7/dist-packages/traitlets/config/application.pyc in launch_instance(cls=<class 'ipykernel.kernelapp.IPKernelApp'>, argv=None, **kwargs={'kernel_class': <class 'kernel.JavaKernel'>})
589 """
590 app = cls.instance(**kwargs)
--> 591 app.initialize(argv)
app.initialize = <bound method IPKernelApp.initialize of <ipykernel.kernelapp.IPKernelApp object at 0x7fe621bdf4d0>>
argv = None
592 app.start()
593
/usr/local/lib/python2.7/dist-packages/ipykernel/kernelapp.pyc in initialize(self=<ipykernel.kernelapp.IPKernelApp object>, argv=None)
/usr/local/lib/python2.7/dist-packages/traitlets/config/application.pyc in catch_config_error(method=<function initialize>, app=<ipykernel.kernelapp.IPKernelApp object>, *args=(None,), **kwargs={})
73 """
74 try:
---> 75 return method(app, *args, **kwargs)
method = <function initialize at 0x7fe621b9f398>
app = <ipykernel.kernelapp.IPKernelApp object at 0x7fe621bdf4d0>
args = (None,)
kwargs = {}
76 except (TraitError, ArgumentError) as e:
77 app.print_help()
/usr/local/lib/python2.7/dist-packages/ipykernel/kernelapp.pyc in initialize(self=<ipykernel.kernelapp.IPKernelApp object>, argv=None)
380 self.init_io()
381 self.init_signal()
--> 382 self.init_kernel()
self.init_kernel = <bound method IPKernelApp.init_kernel of <ipykernel.kernelapp.IPKernelApp object at 0x7fe621bdf4d0>>
383 # shell init steps
384 self.init_path()
/usr/local/lib/python2.7/dist-packages/ipykernel/kernelapp.pyc in init_kernel(self=<ipykernel.kernelapp.IPKernelApp object>)
319 log=self.log,
320 profile_dir=self.profile_dir,
--> 321 user_ns=self.user_ns,
global user_ns = undefined
self.user_ns = None
322 )
323 kernel.record_ports(self.ports)
/usr/local/lib/python2.7/dist-packages/traitlets/config/configurable.pyc in instance(cls=<class 'kernel.JavaKernel'>, *args=(), **kwargs={'iopub_socket': <zmq.sugar.socket.Socket object>, 'log': <logging.Logger object>, 'parent': <ipykernel.kernelapp.IPKernelApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>, 'session': <jupyter_client.session.Session object>, 'shell_streams': [<zmq.eventloop.zmqstream.ZMQStream object>, <zmq.eventloop.zmqstream.ZMQStream object>], 'stdin_socket': <zmq.sugar.socket.Socket object>, 'user_ns': None})
378 # Create and save the instance
379 if cls._instance is None:
--> 380 inst = cls(*args, **kwargs)
inst = undefined
cls = <class 'kernel.JavaKernel'>
args = ()
kwargs = {'log': <logging.Logger object at 0x7fe621c18e10>, 'parent': <ipykernel.kernelapp.IPKernelApp object at 0x7fe621bdf4d0>, 'shell_streams': [<zmq.eventloop.zmqstream.ZMQStream object at 0x7fe621bd5390>, <zmq.eventloop.zmqstream.ZMQStream object at 0x7fe621c18f50>], 'user_ns': None, 'iopub_socket': <zmq.sugar.socket.Socket object at 0x7fe621c0dce8>, 'profile_dir': <IPython.core.profiledir.ProfileDir object at 0x7fe621bba410>, 'session': <jupyter_client.session.Session object at 0x7fe621c18c50>, 'stdin_socket': <zmq.sugar.socket.Socket object at 0x7fe621c0dd50>}
381 # Now make sure that the instance will also be returned by
382 # parent classes' _instance attribute.
/home/vagrant/java9_kernel/javakernel/kernel.pyc in __init__(self=<kernel.JavaKernel object>, **kwargs={'iopub_socket': <zmq.sugar.socket.Socket object>, 'log': <logging.Logger object>, 'parent': <ipykernel.kernelapp.IPKernelApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>, 'session': <jupyter_client.session.Session object>, 'shell_streams': [<zmq.eventloop.zmqstream.ZMQStream object>, <zmq.eventloop.zmqstream.ZMQStream object>], 'stdin_socket': <zmq.sugar.socket.Socket object>, 'user_ns': None})
32 self.env = {"JAVA_9_HOME": os.environ['JAVA_9_HOME'],
33 "KULLA_HOME": os.environ['KULLA_HOME']}
---> 34 self._start_java_repl()
self._start_java_repl = <bound method JavaKernel._start_java_repl of <kernel.JavaKernel object at 0x7fe621bd56d0>>
35
36 @property
/home/vagrant/java9_kernel/javakernel/kernel.pyc in _start_java_repl(self=<kernel.JavaKernel object>)
50 u'->',
51 None,
---> 52 continuation_prompt=u'>>'
global continuation_prompt = undefined
53 )
54 finally:
/usr/local/lib/python2.7/dist-packages/pexpect/replwrap.pyc in __init__(self=<pexpect.replwrap.REPLWrapper object>, cmd_or_spawn='/home/vagrant/jdk-9/bin/java -jar /home/vagrant/kulla.jar', orig_prompt=u'->', prompt_change=None, new_prompt=u'[PEXPECT_PROMPT>', continuation_prompt=u'>>', extra_init_cmd=None)
53 self.continuation_prompt = continuation_prompt
54
---> 55 self._expect_prompt()
self._expect_prompt = <bound method REPLWrapper._expect_prompt of <pexpect.replwrap.REPLWrapper object at 0x7fe621bba250>>
56
57 if extra_init_cmd is not None:
/usr/local/lib/python2.7/dist-packages/pexpect/replwrap.pyc in _expect_prompt(self=<pexpect.replwrap.REPLWrapper object>, timeout=-1)
64 def _expect_prompt(self, timeout=-1):
65 return self.child.expect_exact([self.prompt, self.continuation_prompt],
---> 66 timeout=timeout)
timeout = -1
67
68 def run_command(self, command, timeout=-1):
/usr/local/lib/python2.7/dist-packages/pexpect/spawnbase.pyc in expect_exact(self=<pexpect.pty_spawn.spawn object>, pattern_list=[u'->', u'>>'], timeout=30, searchwindowsize=-1, async=False)
382 return expect_async(exp, timeout)
383 else:
--> 384 return exp.expect_loop(timeout)
exp.expect_loop = <bound method Expecter.expect_loop of <pexpect.expect.Expecter object at 0x7fe621bd5990>>
timeout = 30
385
386 def expect_loop(self, searcher, timeout=-1, searchwindowsize=-1):
/usr/local/lib/python2.7/dist-packages/pexpect/expect.pyc in expect_loop(self=<pexpect.expect.Expecter object>, timeout=29.661145210266113)
100 timeout = end_time - time.time()
101 except EOF as e:
--> 102 return self.eof(e)
self.eof = <bound method Expecter.eof of <pexpect.expect.Expecter object at 0x7fe621bd5990>>
e = EOF('End Of File (EOF). Exception style platform.',)
103 except TIMEOUT as e:
104 return self.timeout(e)
/usr/local/lib/python2.7/dist-packages/pexpect/expect.pyc in eof(self=<pexpect.expect.Expecter object>, err=EOF('End Of File (EOF). Exception style platform.',))
47 if err is not None:
48 msg = str(err) + '\n' + msg
---> 49 raise EOF(msg)
EOF = <class 'pexpect.exceptions.EOF'>
msg = "End Of File (EOF). Exception style platform.\n<pexpect.pty_spawn.spawn object at 0x7fe621bd5850>\ncommand: /home/vagrant/jdk-9/bin/java\nargs: ['/home/vagrant/jdk-9/bin/java', '-jar', '/home/vagrant/kulla.jar']\nsearcher: None\nbuffer (last 100 chars): u''\nbefore (last 100 chars): u'l.Repl.start(Repl.java:213)\\r\\n\\tat tool.Repl.start(Repl.java:208)\\r\\n\\tat tool.Repl.main(Repl.java:198)\\r\\n'\nafter: <class 'pexpect.exceptions.EOF'>\nmatch: None\nmatch_index: None\nexitstatus: None\nflag_eof: True\npid: 2247\nchild_fd: 28\nclosed: False\ntimeout: 30\ndelimiter: <class 'pexpect.exceptions.EOF'>\nlogfile: None\nlogfile_read: None\nlogfile_send: None\nmaxread: 2000\nignorecase: False\nsearchwindowsize: None\ndelaybeforesend: 0.05\ndelayafterclose: 0.1\ndelayafterterminate: 0.1"
50
51 def timeout(self, err=None):
EOF: End Of File (EOF). Exception style platform.
<pexpect.pty_spawn.spawn object at 0x7fe621bd5850>
command: /home/vagrant/jdk-9/bin/java
args: ['/home/vagrant/jdk-9/bin/java', '-jar', '/home/vagrant/kulla.jar']
searcher: None
buffer (last 100 chars): u''
before (last 100 chars): u'l.Repl.start(Repl.java:213)\r\n\tat tool.Repl.start(Repl.java:208)\r\n\tat tool.Repl.main(Repl.java:198)\r\n'
after: <class 'pexpect.exceptions.EOF'>
match: None
match_index: None
exitstatus: None
flag_eof: True
pid: 2247
child_fd: 28
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
Jupyter Console 4.0.3
Shutting down kernel
When working with the updated kulla.jar, all errors were gone.
Weird.
So this is what happens when I try both jars (I also include my java --version
output)
~/Downloads /Library/Java/JavaVirtualMachines/jdk1.9.0.jdk/Contents/Home/bin/java -jar kulla.jar
| Welcome to the Java REPL -- Version 0.411
| Type /help for help
~/Downloads /Library/Java/JavaVirtualMachines/jdk1.9.0.jdk/Contents/Home/bin/java -jar kulla--20151224010058.jar
| Welcome to JShell -- Version 1.9.0-ea
| Type /help for help
~/Downloads /Library/Java/JavaVirtualMachines/jdk1.9.0.jdk/Contents/Home/bin/java -version
java version "1.9.0-ea"
Java(TM) SE Runtime Environment (build 1.9.0-ea-b93)
Java HotSpot(TM) 64-Bit Server VM (build 1.9.0-ea-b93, mixed mode)
But no biggie, Your link is clearly more correct. I already updated the readme pointing to it. Think this issue is ready to close?
Yeah, it's weird. Close it.
kulla.jar downloaded from the link on README seems not compatible with the newest jdk b99.
It took me hours to figure out why my installation failed. After I redownloaded the kulla.jar from this link, the installation finally succeed.