Issue1861985

classification
Title: extending java classes from python code fails
Type: Severity: normal
Components: None Versions:
Milestone:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: cgroves, tristanlk
Priority: high Keywords:

Created on 2008-01-02.05:53:24 by tristanlk, last changed 2008-01-18.09:26:23 by cgroves.

Files
File name Uploaded Description Edit Remove
test.py tristanlk, 2008-01-02.05:53:24
TestA.java tristanlk, 2008-01-02.05:54:05 absrtact class
Test.java tristanlk, 2008-01-02.05:54:31 normal class
Messages
msg2049 (view) Author: tristan (tristanlk) Date: 2008-01-02.05:53:24
classes writen in python, that extend java classes throw a NoClassDefFoundError.

see attached files, and run test.py for demo output which should look like this:

$ jython test.py 
TEST!
Traceback (innermost last):
  File "test.py", line 5, in ?
java.lang.NoClassDefFoundError: TestA
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at org.python.core.BytecodeLoader$Loader.loadClassFromBytes(BytecodeLoader.java:89)
        at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:35)
        at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:50)
        at org.python.core.MakeProxies.makeClass(MakeProxies.java:28)
        at org.python.core.MakeProxies.makeProxy(MakeProxies.java:74)
        at org.python.core.PyClass.init(PyClass.java:127)
        at org.python.core.PyClass.<init>(PyClass.java:80)
        at org.python.core.Py.makeClass(Py.java:1690)
        at org.python.core.Py.makeClass(Py.java:1595)
        at org.python.pycode._pyx0.f$0(test.py:5)
        at org.python.pycode._pyx0.call_function(test.py)
        at org.python.core.PyTableCode.call(PyTableCode.java:222)
        at org.python.core.PyCode.call(PyCode.java:14)
        at org.python.core.Py.runCode(Py.java:1296)
        at org.python.core.__builtin__.execfile_flags(__builtin__.java:543)
        at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:143)
        at org.python.util.jython.main(jython.java:210)

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: TestA
msg2050 (view) Author: tristan (tristanlk) Date: 2008-01-02.05:54:07
File Added: TestA.java
msg2051 (view) Author: tristan (tristanlk) Date: 2008-01-02.05:54:31
File Added: Test.java
msg2052 (view) Author: tristan (tristanlk) Date: 2008-01-18.05:26:01
increasing the priority on this because i think it's a highly core thing to jython (well it's one of the core reasons why i'm using it over CPython).
msg2053 (view) Author: Charlie Groves (cgroves) Date: 2008-01-18.09:26:23
Fixed this on trunk in r4055.  It looks like some of the classloader wrangling code got dropped in cleaning out the support for early versions of Java, and our tests didn't pick it up because it was only broken for classes that weren't available on the startup classpath.  Thanks for the report!
History
Date User Action Args
2008-01-02 05:53:24tristanlkcreate