[
https://issues.apache.org/jira/browse/PIVOT-917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13746107#comment-13746107
]
Jose V Nunez edited comment on PIVOT-917 at 8/21/13 4:15 PM:
-------------------------------------------------------------
I tried splitting the inner class and the controller script like this:
runHelloBxml.py
{code}
#!/usr/bin/env jython
from org.apache.pivot.wtk import DesktopApplicationContext
from java.lang import Runnable, Exception as Ex
from javax.swing import SwingUtilities
import sys,subprocess,os,re, traceback
from HelloClasses import HelloBXML
class Task(Runnable):
def __init__(self, argv):
self.argv = argv
def run(self):
DesktopApplicationContext.main(HelloBXML().class, self.argv)
if __name__ == "__main__":
try:
SwingUtilities.invokeAndWait(Task(sys.argv[1:]))
except:
traceback.print_exc(file=sys.stderr)
sys.exit(192)
{code}
And the inner class, now a regular class, module file: HelloClasses.py:
{code}
from org.apache.pivot.beans import BXMLSerializer
from org.apache.pivot.wtk import Application
class HelloBXML(Application):
def __init__(self):
self.window = None
self.bxmlSerializer = BXMLSerializer()
def startup(self, display, properties):
self.window = self.bxmlSerializer.readObject(self.class,
"hello.bxml")
self.window.open(display)
def shutdown(self, optional):
if self.window != null:
window.close()
return False;
def suspend(self):
pass
def resume(self):
pass
{code}
Somehow JYTHON doesn't get the Class:
{code}
/home/jose/scripts/run_HelloBXML_py.sh /home/jose/scripts/runHelloBxml.py
CLASSPATH=/home/jose/jython2.5.3/jython.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-web-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-terra-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-core-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-charts-2.0.3.jar:.:/home/jose/scripts
+ /home/jose/jython2.5.3/jython /home/jose/scripts/runHelloBxml.py
java.lang.ClassNotFoundException: org.python.proxies.HelloClasses$HelloBXML$1
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at
org.apache.pivot.wtk.DesktopApplicationContext.main(DesktopApplicationContext.java:606)
at
org.apache.pivot.wtk.DesktopApplicationContext.main(DesktopApplicationContext.java:881)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:186)
at
org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:204)
at org.python.core.PyObject.__call__(PyObject.java:404)
at org.python.core.PyObject.__call__(PyObject.java:408)
at org.python.pycode._pyx0.run$3(/home/jose/scripts/runHelloBxml.py:14)
at
org.python.pycode._pyx0.call_function(/home/jose/scripts/runHelloBxml.py)
at org.python.core.PyTableCode.call(PyTableCode.java:165)
at org.python.core.PyBaseCode.call(PyBaseCode.java:301)
at org.python.core.PyBaseCode.call(PyBaseCode.java:194)
at org.python.core.PyFunction.__call__(PyFunction.java:387)
at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:220)
at org.python.core.PyMethod.__call__(PyMethod.java:211)
at org.python.core.PyMethod.__call__(PyMethod.java:201)
at org.python.core.PyMethod.__call__(PyMethod.java:196)
at org.python.core.PyObject._jcallexc(PyObject.java:3502)
at org.python.core.PyObject._jcall(PyObject.java:3534)
at org.python.proxies.__main__$Task$2.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
{code}
was (Author: [email protected]):
I tried splitting the inner class and the controller script like this:
runHelloBxml.py
{code}
#!/usr/bin/env jython
from org.apache.pivot.wtk import DesktopApplicationContext
from java.lang import Runnable, Exception as Ex
from javax.swing import SwingUtilities
import sys,subprocess,os,re, traceback
import HelloBXML
class Task(Runnable):
def __init__(self, argv):
self.argv = argv
def run(self):
DesktopApplicationContext.main(HelloBXML, self.argv)
if __name__ == "__main__":
try:
SwingUtilities.invokeAndWait(Task(sys.argv[1:]))
except:
traceback.print_exc(file=sys.stderr)
sys.exit(192)
{code}
And the inner class, now a regular class, HelloBXML.py:
{code}
from org.apache.pivot.beans import BXMLSerializer
from org.apache.pivot.wtk import Application
class HelloBXML(Application):
def __init__(self):
self.window = None
self.bxmlSerializer = BXMLSerializer()
def startup(self, display, properties):
self.window = self.bxmlSerializer.readObject(HelloBXML,
"hello.bxml")
self.window.open(display)
def shutdown(self, optional):
if self.window != null:
window.close()
return False;
def suspend(self):
pass
def resume(self):
pass
{code}
I get a different error now, somehow JYTHON doesn't get the Class:
{code}
/home/jose/scripts/run_HelloBXML_py.sh /home/jose/scripts/runHelloBxml.py
CLASSPATH=/home/jose/jython2.5.3/jython.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-web-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-terra-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-core-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-charts-2.0.3.jar:.:/home/jose/scripts
+ /home/jose/jython2.5.3/jython /home/jose/scripts/runHelloBxml.py
Traceback (most recent call last):
File "/home/jose/scripts/runHelloBxml.py", line 18, in <module>
SwingUtilities.invokeAndWait(Task(sys.argv[1:]))
File "/home/jose/scripts/runHelloBxml.py", line 14, in run
DesktopApplicationContext.main(HelloBXML, self.argv)
TypeError: main(): 1st arg can't be coerced to java.lang.Class
{code}
> Pivot cannot find inner classes in the CLASSPATH when invoked from Jython
> -------------------------------------------------------------------------
>
> Key: PIVOT-917
> URL: https://issues.apache.org/jira/browse/PIVOT-917
> Project: Pivot
> Issue Type: Bug
> Components: pivot-on-apache-extras
> Affects Versions: 2.0.3
> Reporter: Jose V Nunez
> Assignee: Sandro Martini
> Labels: jython
> Attachments: HelloBXML.py, run_HelloBXML.sh
>
>
> The following is similar to the simple Hello world BXML from the PIVOT
> website (http://pivot.apache.org/tutorials/hello-bxml.html, file hello.bxml
> content is identical):
> {code}
> #!/usr/bin/env jython
> from org.apache.pivot.beans import BXMLSerializer
> from org.apache.pivot.collections import Map
> from org.apache.pivot.wtk import Application
> from org.apache.pivot.wtk import Display
> from org.apache.pivot.wtk import Window
> from org.apache.pivot.wtk import DesktopApplicationContext
> from java.lang import Runnable, Exception as Ex
> from javax.swing import SwingUtilities
> import sys,subprocess,os,re, traceback
> class HelloBXML(Application):
> def __init__(self):
> self.window = None
> self.bxmlSerializer = BXMLSerializer()
> def startup(self, display, properties):
> self.window = self.bxmlSerializer.readObject(HelloBXML,
> "hello.bxml")
> self.window.open(display)
> def shutdown(self, optional):
> if self.window != null:
> window.close()
> return False;
> def suspend(self):
> pass
> def resume(self):
> pass
> class Task(Runnable):
> def __init__(self, argv):
> self.argv = argv
> def run(self):
> DesktopApplicationContext.main(HelloBXML, self.argv)
> if __name__ == "__main__":
> try:
> SwingUtilities.invokeAndWait(Task(sys.argv[1:]))
> except:
> traceback.print_exc(file=sys.stderr)
> sys.exit(192)
> {code}
> Exception stack trace:
> {code}
> # Script file: ~/HelloBXML.py
> java.lang.ClassNotFoundException: org.python.proxies.__main__$HelloBXML$1
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:186)
> at
> org.apache.pivot.wtk.DesktopApplicationContext.main(DesktopApplicationContext.java:606)
> at
> org.apache.pivot.wtk.DesktopApplicationContext.main(DesktopApplicationContext.java:881)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at
> org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:186)
> at
> org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:204)
> at org.python.core.PyObject.__call__(PyObject.java:404)
> at org.python.core.PyObject.__call__(PyObject.java:408)
> at org.python.pycode._pyx0.run$9(/home/jnunezzu/HelloBXML.py:39)
> at org.python.pycode._pyx0.call_function(/home/jnunezzu/HelloBXML.py)
> at org.python.core.PyTableCode.call(PyTableCode.java:165)
> at org.python.core.PyBaseCode.call(PyBaseCode.java:301)
> at org.python.core.PyBaseCode.call(PyBaseCode.java:194)
> at org.python.core.PyFunction.__call__(PyFunction.java:387)
> at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:220)
> at org.python.core.PyMethod.__call__(PyMethod.java:211)
> at org.python.core.PyMethod.__call__(PyMethod.java:201)
> at org.python.core.PyMethod.__call__(PyMethod.java:196)
> at org.python.core.PyObject._jcallexc(PyObject.java:3502)
> at org.python.core.PyObject._jcall(PyObject.java:3534)
> at org.python.proxies.__main__$Task$2.run(Unknown Source)
> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
> at java.awt.EventQueue.access$000(EventQueue.java:101)
> at java.awt.EventQueue$3.run(EventQueue.java:666)
> at java.awt.EventQueue$3.run(EventQueue.java:664)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
> at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
> at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
> {code}
> I tested this with the following configuration:
> {code}
> Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:48:36)
> [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0
> Type "help", "copyright", "credits" or "license" for more information.
> java -version
> java version "1.7.0"
> Java(TM) SE Runtime Environment (build 1.7.0-b147)
> Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
> uname -a
> Linux XXXX 2.6.18-348.3.1.el5 #1 SMP Tue Mar 5 13:19:32 EST 2013 x86_64
> x86_64 x86_64 GNU/Linux
> echo $CLASSPATH
> /home/jose/src/apache-pivot-2.0.3/lib/hello.bxml:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-terra-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-wtk-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-web-server-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-web-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-core-2.0.3.jar:/home/jose/src/apache-pivot-2.0.3/lib/pivot-charts-2.0.3.jar::.
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira