New question #293629 on Sikuli:
https://answers.launchpad.net/sikuli/+question/293629

So, I'm trying to put a Swing GUI in front of my Sikuli script. I've got the 
basic script working (without the GUI) in Eclipse. With the GUI added, I've 
defined a Java interface for the script, and on clicking a button in the GUI:

                        public void mouseClicked(MouseEvent arg0) {
                        JythonFactory jf = JythonFactory.getInstance();
                        EpicPolicyPusherType eType = (EpicPolicyPusherType) 
jf.getJythonObject(
                                               
"jyinterface.interfaces.EpicPolicyPusherType", 
                                               "src/EpicPolicyPusher.py");
                        }

The object factory is defined as:

   public static Object getJythonObject(String interfaceName,
                                        String pathToJythonModule){
              
       Object javaInt = null;
       PythonInterpreter interpreter = new PythonInterpreter();
       interpreter.execfile(pathToJythonModule);
       ........

There is further code in the object factory (I copied it from a tutorial) but 
it's not relevant at this point because we're not getting passed the 
interpreter.execfile command.

The script import Sikuli at the top, as instructed 
here:https://github.com/RaiMan/SikuliX-2014/wiki/Usage-in-Java-programming

     import time, datetime
     import org.sikuli.script.SikulixForJython
     from sikuli import *

For the record, I've added the sikulixapi.jar library to both the Java build 
path and the PYTHONPATH. Jython version BTW is 2.7. %SIKULI_HOME% is pointing 
to c:\sikulix.

Anyway, when I try to run, I get the GUI. I click the button. The object 
factory instantiates the script object, which tries to initialize, and throws:

Exception in thread "AWT-EventQueue-0" Traceback (most recent call last):
  File "src/EpicPolicyPusher.py", line 20, in <module>
    from sikuli import *
  File "C:\SikuliX\sikulixapi.jar\Lib\sikuli\__init__.py", line 6, in <module>
  File "C:\SikuliX\sikulixapi.jar\Lib\sikuli\Sikuli.py", line 32, in <module>
java.lang.ExceptionInInitializerError
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.python.core.Py.loadAndInitClass(Py.java:991)
        at org.python.core.Py.findClassInternal(Py.java:926)
        at org.python.core.Py.findClassEx(Py.java:977)
        at 
org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:133)
        at 
org.python.core.packagecache.PackageManager.findClass(PackageManager.java:33)
        at 
org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:122)
        at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:134)
        at org.python.core.PyObject.__findattr__(PyObject.java:946)
        at org.python.core.imp.importFromAs(imp.java:1160)
        at org.python.core.imp.importFrom(imp.java:1132)
        at 
sikuli.Sikuli$py.f$0(C:\SikuliX\sikulixapi.jar\Lib\sikuli\Sikuli.py:547)
        at 
sikuli.Sikuli$py.call_function(C:\SikuliX\sikulixapi.jar\Lib\sikuli\Sikuli.py)
        at org.python.core.PyTableCode.call(PyTableCode.java:167)
        at org.python.core.PyCode.call(PyCode.java:18)
        at org.python.core.imp.createFromCode(imp.java:436)
        at org.python.core.util.importer.importer_load_module(importer.java:109)
        at 
org.python.modules.zipimport.zipimporter.zipimporter_load_module(zipimporter.java:163)
        at 
org.python.modules.zipimport.zipimporter$zipimporter_load_module_exposer.__call__(Unknown
 Source)
        at 
org.python.core.PyBuiltinMethodNarrow.__call__(PyBuiltinMethodNarrow.java:46)
        at org.python.core.imp.loadFromLoader(imp.java:587)
        at org.python.core.imp.find_module(imp.java:537)
        at org.python.core.PyModule.impAttr(PyModule.java:106)
        at org.python.core.imp.import_next(imp.java:842)
        at org.python.core.imp.import_module_level(imp.java:959)
        at org.python.core.imp.importName(imp.java:1062)
        at org.python.core.ImportFunction.__call__(__builtin__.java:1280)
        at org.python.core.PyObject.__call__(PyObject.java:431)
        at org.python.core.__builtin__.__import__(__builtin__.java:1232)
        at org.python.core.imp.importAll(imp.java:1182)
        at sikuli$py.f$0(C:\SikuliX\sikulixapi.jar\Lib\sikuli\__init__.py:6)
        at 
sikuli$py.call_function(C:\SikuliX\sikulixapi.jar\Lib\sikuli\__init__.py)
        at org.python.core.PyTableCode.call(PyTableCode.java:167)
        at org.python.core.PyCode.call(PyCode.java:18)
        at org.python.core.imp.createFromCode(imp.java:436)
        at org.python.core.util.importer.importer_load_module(importer.java:109)
        at 
org.python.modules.zipimport.zipimporter.zipimporter_load_module(zipimporter.java:163)
        at 
org.python.modules.zipimport.zipimporter$zipimporter_load_module_exposer.__call__(Unknown
 Source)
        at 
org.python.core.PyBuiltinMethodNarrow.__call__(PyBuiltinMethodNarrow.java:46)
        at org.python.core.imp.loadFromLoader(imp.java:587)
        at org.python.core.imp.find_module(imp.java:537)
        at org.python.core.imp.import_next(imp.java:840)
        at org.python.core.imp.import_module_level(imp.java:959)
        at org.python.core.imp.importName(imp.java:1062)
        at org.python.core.ImportFunction.__call__(__builtin__.java:1280)
        at org.python.core.PyObject.__call__(PyObject.java:431)
        at org.python.core.__builtin__.__import__(__builtin__.java:1232)
        at org.python.core.imp.importAll(imp.java:1182)
        at org.python.pycode._pyx2.f$0(src/EpicPolicyPusher.py:412)
        at org.python.pycode._pyx2.call_function(src/EpicPolicyPusher.py)
        at org.python.core.PyTableCode.call(PyTableCode.java:167)
        at org.python.core.PyCode.call(PyCode.java:18)
        at org.python.core.Py.runCode(Py.java:1386)
        at org.python.core.__builtin__.execfile_flags(__builtin__.java:535)
        at 
org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:286)
        at 
jyinterface.factory.JythonFactory.getJythonObject(JythonFactory.java:22)
        at PolicyMaker_UI.UpFront$2.mouseClicked(UpFront.java:362)
        at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown
 Source)
        at 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown
 Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown
 Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IllegalThreadStateException: Cannot call method from the 
event dispatcher thread
        at java.awt.Robot.checkNotDispatchThread(Unknown Source)
        at java.awt.Robot.waitForIdle(Unknown Source)
        at org.sikuli.script.Mouse.move(Mouse.java:345)
        at org.sikuli.script.Mouse.move(Mouse.java:318)
        at org.sikuli.script.Mouse.init(Mouse.java:59)
        at org.sikuli.script.Screen.initScreens(Screen.java:89)
        at org.sikuli.script.Screen.<clinit>(Screen.java:58)
        ... 90 more
java.lang.ExceptionInInitializerError: java.lang.ExceptionInInitializerError

So, the import of standard Python/Jython modules works OK, the import of 
SikulixForJython works, the main "from sikuli import *" dies gruesomely.

For the record, since the named import of SikulixForJython works, I've 
experimented with explicit import statements, like:
     from org.sikuli.script import Region

These imports do not fail, but any attempt to use the named area of 
functionality e.g. "x = Region(1,1,1000,1000)"  will fail at runtime with 
'variable "Region" not defined' errors.

Any assistance appreciated.

d

-- 
You received this question notification because your team Sikuli Drivers
is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to