Bachmann1234 / java9_kernel

An ipython kernel for java 9
Apache License 2.0
72 stars 17 forks source link

Invalid kulla.jar? #14

Closed donghanglin closed 8 years ago

donghanglin commented 8 years ago

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.

Bachmann1234 commented 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 :-)

Bachmann1234 commented 8 years ago

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

Bachmann1234 commented 8 years ago

link updated: https://github.com/Bachmann1234/java9_kernel/commit/6707c63a43ae76242d8fb25e2daf43d5049c3e7f

donghanglin commented 8 years ago

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.

Bachmann1234 commented 8 years ago

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?

donghanglin commented 8 years ago

Yeah, it's weird. Close it.