From: SourceForge.net <no...@so...> - 2006-05-11 20:01:38
|
Bugs item #1047347, was opened at 2004-10-14 21:21 Message generated for change (Settings changed) made by fwierzbicki You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112867&aid=1047347&group_id=12867 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Jythonc compiler Group: Deferred Status: Open Resolution: None >Priority: 4 Submitted By: Gene Cash (gcash) Assigned to: Nobody/Anonymous (nobody) >Summary: Subclass error when you don\\\'t have a no-argument constructor Initial Comment: If you have a Java class signature that doesn't have a constructor with no arguments like: DoSomeStuff(int foo) DoSomeStuff(float foo) and you DON'T have: DoSomeStuff() Then when you try to subclass DoSomeStuff, you get a compile error because it generates code to handle the non-existant "DoSomeStuff()" case. If StarInterpolator is a subclass of RotationInterpolator, this causes errors like : Compiling .java to .class... [snip] 1 ./jpywork/Star.java:243: cannot resolve symbol symbol : constructor RotationInterpolator () location: class javax.media.j3d.RotationInterpolator super(); ^ super() doesn't exist because RotationInterpolator() doesn't exist. If you go into the generated code and delete the following code StarInterpolator() { super(); __initProxy__(new Object[] {}); } then it compiles just fine. ---------------------------------------------------------------------- Comment By: Gene Cash (gcash) Date: 2004-10-15 02:13 Message: Logged In: YES user_id=141974 I HAVE A FIX! In proxies.py make the following change: *** 346,363 **** --- 346,365 ---- def addConstructors(self, c): for constructor in c.getDeclaredConstructors(): access = constructor.modifiers if isPrivate(access): continue if isNative(access): access = access & ~NATIVE if isProtected(access): access = access & ~PROTECTED | PUBLIC + if not access: + continue parameters = tuple(constructor.parameterTypes) throws = constructor.exceptionTypes self.jconstructors.append( (access, parameters, throws) ) def callSuperMethod(self, name, supername, access, ret, sig, throws=[]): if self.issuperproxy: return self.supermethods[supername] = supername args = [typeName(ret)] This makes it ignore constructors for which you have no access. ---------------------------------------------------------------------- Comment By: Gene Cash (gcash) Date: 2004-10-14 21:39 Message: Logged In: YES user_id=141974 Interesting, there's a no-argument prototype, but it's not public: [17:27:20]# javap javax.media.j3d.TransformGroup Compiled from "TransformGroup.java" public class javax.media.j3d.TransformGroup extends javax.media.j3d.Group{ public static final int ALLOW_TRANSFORM_READ; public static final int ALLOW_TRANSFORM_WRITE; public javax.media.j3d.TransformGroup(); public javax.media.j3d.TransformGroup(javax.media.j3d.Transform3D); void createRetained(); public void setTransform(javax.media.j3d.Transform3D); public void getTransform(javax.media.j3d.Transform3D); public javax.media.j3d.Node cloneNode(boolean); void duplicateAttributes(javax.media.j3d.Node,boolean); } I'm not a java programmer so I don't understand why, except the no-argument version is not useful. I set python.security.respectJavaAccessibility = false and got the following traceback: processing GearBox Traceback (innermost last): File "/usr/local/jython-2.1/Tools/jythonc/jythonc.py", line 5, in ? File "/usr/local/jython-2.1/Tools/jythonc/main.py", line 300, in main File "/usr/local/jython-2.1/Tools/jythonc/main.py", line 219, in doCompile File "/usr/local/jython-2.1/Tools/jythonc/compile.py", line 195, in compilefile File "/usr/local/jython-2.1/Tools/jythonc/compile.py", line 217, in compile File "/usr/local/jython-2.1/Tools/jythonc/compile.py", line 274, in addDependencies File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 63, in lookupName File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 42, in importName File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 85, in getattr File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 17, in wrapJava File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 146, in __init__ File "/usr/local/jython-2.1/Tools/jythonc/ImportName.py", line 74, in __init__ java.lang.NoClassDefFoundError: Lsun/awt/DrawingSurfaceInfo; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:1522) at java.lang.Class.getDeclaredFields(Class.java:1098) at org.python.core.PyJavaClass.getAccessibleFields(PyJavaClass.java) at org.python.core.PyJavaClass.setFields(PyJavaClass.java) at org.python.core.PyJavaClass.init__dict__(PyJavaClass.java) at org.python.core.PyJavaClass.initialize(PyJavaClass.java) at org.python.core.PyJavaClass.__tojava__(PyJavaClass.java) at org.python.core.ReflectedArgs.matches(ReflectedArgs.java) at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java) at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java) at org.python.core.PyObject.__call__(PyObject.java) at ImportName$py.__init__$10(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:74) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyMethod.__call__(PyMethod.java) at org.python.core.PyObject.__call__(PyObject.java) at org.python.core.PyObject.invoke(PyObject.java) at ImportName$py.__init__$23(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:146) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyInstance.__init__(PyInstance.java) at org.python.core.PyClass.__call__(PyClass.java) at org.python.core.PyObject.__call__(PyObject.java) at ImportName$py.wrapJava$1(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:17) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at ImportName$py.getattr$11(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:85) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyInstance.invoke(PyInstance.java) at ImportName$py.importName$3(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:42) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at ImportName$py.lookupName$5(/usr/local/jython-2.1/Tools/jythonc/ImportName.py:63) at ImportName$py.call_function(/usr/local/jython-2.1/Tools/jythonc/ImportName.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyObject.invoke(PyObject.java) at compile$py.addDependencies$13(/usr/local/jython-2.1/Tools/jythonc/compile.py:274) at compile$py.call_function(/usr/local/jython-2.1/Tools/jythonc/compile.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyInstance.invoke(PyInstance.java) at compile$py.compile$10(/usr/local/jython-2.1/Tools/jythonc/compile.py:217) at compile$py.call_function(/usr/local/jython-2.1/Tools/jythonc/compile.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyMethod.__call__(PyMethod.java) at org.python.core.PyObject.__call__(PyObject.java) at org.python.core.PyObject.invoke(PyObject.java) at compile$py.compilefile$9(/usr/local/jython-2.1/Tools/jythonc/compile.py:195) at compile$py.call_function(/usr/local/jython-2.1/Tools/jythonc/compile.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyInstance.invoke(PyInstance.java) at main$py.doCompile$6(/usr/local/jython-2.1/Tools/jythonc/main.py:219) at main$py.call_function(/usr/local/jython-2.1/Tools/jythonc/main.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at main$py.main$9(/usr/local/jython-2.1/Tools/jythonc/main.py:300) at main$py.call_function(/usr/local/jython-2.1/Tools/jythonc/main.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyFunction.__call__(PyFunction.java) at org.python.core.PyObject.invoke(PyObject.java) at org.python.pycode._pyx0.f$0(/usr/local/jython-2.1/Tools/jythonc/jythonc.py:5) at org.python.pycode._pyx0.call_function(/usr/local/jython-2.1/Tools/jythonc/jythonc.py) at org.python.core.PyTableCode.call(PyTableCode.java) at org.python.core.PyCode.call(PyCode.java) at org.python.core.Py.runCode(Py.java) at org.python.core.__builtin__.execfile_flags(__builtin__.java) at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java) at org.python.util.jython.main(jython.java) java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: Lsun/awt/DrawingSurfaceInfo; so that doesn't help. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112867&aid=1047347&group_id=12867 |