[ https://issues.apache.org/jira/browse/PIVOT-917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13745656#comment-13745656 ]
Sandro Martini edited comment on PIVOT-917 at 8/21/13 7:45 AM: --------------------------------------------------------------- Jose, under Pivot-Stuff, I created a sample project with your files but updated for my environment (Windows batch files to run the example) ... you can find all here: http://svn.codespot.com/a/apache-extras.org/pivot-stuff/trunk/pivot-stuff-common-jython Under test/pivot_stuff/common_jython you can find a minimal example for Swing (that works) and HelloBXML and related bxml file for Pivot, but currently in my environment (Windows 8, both with latest JDK 6 and latest JDK 7) I got the error at the end of this comment, with an initial warning on Preferences that could be due to some restriction (in Jython ? or in Jython on win 8 ?) to write entries in the Windows registry, even if I am an administrator of the PC, we have to check ... at least in another Windows environment (currently I have problems to get some Linux VM). Under _scripts there are some batch files to run examples, but they are not completely general because they contain some references to my environment, but changing env vars should be enough on a Windows PC ... or could you adapt your scripts to my approach (executing java having only Jython jar in the CLASSPATH, without having Jython installed in the PC, like a real deploy of a RIA via web) ? Of course I could try even installing Jython in my env, but this could be good only for dev environment (and not for real users) ... Anyway, when a Pivot app starts, it tries to save some data using java Preferences (and depending on the platform should save in the file system or in the registry, if I remember well) ... we have a fallback so application can proceed even in case of error like in this case (but tried the same example in pure Java without Jython and all works ... could be a Jython/Preferences issue when running applications without a package). Probably to solve the problem here more than all classes inside a single script (I have to try to do the same in a Groovy script), we could try to split (like in Java) 1 class per file ... what do you think ? Have you got some Jython example for this ? Last, in your sample, at the bottom there is a block where you call: SwingUtilities.invokeAndWait(Task(sys.argv[1:])) are you sure that we need this ? What do you think ? Suggestions, comments ? Thank you very much. My Error (with the jvm process blocked, I have to kill by hand): ago 21, 2013 1:23:59 AM java.util.prefs.WindowsPreferences <init> WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5. java.lang.ClassNotFoundException: org.python.proxies.__main__$HelloBXML$1 at org.python.core.SyspathJavaLoader.findClass(SyspathJavaLoader.java:127) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) 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:606) 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(../test/pivot_stuff/common_jython/HelloBXML.py:40) at org.python.pycode._pyx0.call_function(../test/pivot_stuff/common_jython/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:733) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) Note that this: at org.apache.pivot.wtk.DesktopApplicationContext.main(DesktopApplicationContext.java:606) map to this line in source code: Class<?> applicationClass = Class.forName(applicationClassName); where applicationClassName is the full class name of (User) Application main class. was (Author: smartini): Jose, under Pivot-Stuff, I created a sample project with your files but updated for my environment (Windows batch files to run the example) ... you can find all here: http://svn.codespot.com/a/apache-extras.org/pivot-stuff/trunk/pivot-stuff-common-jython Under test/pivot_stuff/common_jython you can find a minimal example for Swing (that works) and HelloBXML and related bxml file for Pivot, but currently in my environment (Windows 8, both with latest JDK 6 and latest JDK 7) I got the error at the end of this comment, with an initial warning on Preferences that could be due to some restriction (in Jython ? or in Jython on win 8 ?) to write entries in the Windows registry, even if I am an administrator of the PC, we have to check ... at least in another Windows environment (currently I have problems to get some Linux VM). Under _scripts there are some batch files to run examples, but they are not completely general because they contain some references to my environment, but changing env vars should be enough on a Windows PC ... or could you adapt your scripts to my approach (executing java having only Jython jar in the CLASSPATH, without having Jython installed in the PC, like a real deploy of a RIA via web) ? Of course I could try even installing Jython in my env, but this could be good only for dev environment (and not for real users) ... Anyway, when a Pivot app starts, it tries to save some data using java Preferences (and depending on the platform should save in the file system or in the registry, if I remember well) ... we have a fallback so application can proceed even in case of error like in this case (but tried the same example in pure Java without Jython and all works ... could be a Jython/Preferences issue when running applications without a package). Probably to solve the problem here more than all classes inside a single script (I have to try to do the same in a Groovy script), we could try to split (like in Java) 1 class per file ... what do you think ? Have you got some Jython example for this ? Last, in your sample, at the bottom there is a block where you call: SwingUtilities.invokeAndWait(Task(sys.argv[1:])) are you sure that we need this ? What do you think ? Suggestions, comments ? Thank you very much. My Error (with the jvm process blocked, I have to kill by hand): ago 21, 2013 1:23:59 AM java.util.prefs.WindowsPreferences <init> WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5. java.lang.ClassNotFoundException: org.python.proxies.__main__$HelloBXML$1 at org.python.core.SyspathJavaLoader.findClass(SyspathJavaLoader.java:127) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) 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:606) 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(../test/pivot_stuff/common_jython/HelloBXML.py:40) at org.python.pycode._pyx0.call_function(../test/pivot_stuff/common_jython/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:733) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) > 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 > > > 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