Issue1047347
Created on 2004-10-14.21:21:26 by gcash, last changed 2009-03-13.23:44:59 by fwierzbicki.
Messages | |||
---|---|---|---|
msg938 (view) | Author: Gene Cash (gcash) | Date: 2004-10-14.21:21:26 | |
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. |
|||
msg939 (view) | Author: Gene Cash (gcash) | Date: 2004-10-14.21:39:07 | |
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. |
|||
msg940 (view) | Author: Gene Cash (gcash) | Date: 2004-10-15.02:13:57 | |
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. |
|||
msg4269 (view) | Author: Frank Wierzbicki (fwierzbicki) | Date: 2009-03-13.23:44:59 | |
jythonc is no longer maintained |
History | |||
---|---|---|---|
Date | User | Action | Args |
2009-03-13 23:44:59 | fwierzbicki | set | status: open -> closed resolution: wont fix messages: + msg4269 nosy: + fwierzbicki |
2004-10-14 21:21:26 | gcash | create |
Supported by Python Software Foundation,
Powered by Roundup