[1.1.4] Windows: multi-monitor environment: SikuliX behaviour depends on the monitor it is started on

Asked by Maryjo

********************** the observed behaviour

I have four monitors. If I initiate Sikuli from monitor 1, everything works. If I initiate Sikuli from any of the other monitors, I get the errors I posted above and the IDE never starts. You can see that the exception is within the mouse initialization. It doesn't matter if I'm launching Sikuli from the command line or by double-clicking the jar file. I have to launch from monitor 1 to use it.

I can put the IDE on any monitor once it is running. The matching preview function can find an image on any monitor. However, when Sikuli runs, it only finds images on monitor 1.

-------------------------------------------------------------------------------------------------------------
I deleted an older version of SikuliX and copied the latest jython-standalone-2.7.1.jar, sikulix.jar, and sikulixapi.jar. I've installed JRE and then JDK 8.0.2 and rebooted my machine. When I click the jython and api jars, I get a wait cursor for a few seconds, and then nothing. When I click on the sikulix.jar, I get an error that Neither Jython nor Jruby are available, so the IDE won't open.
I've spent about 2 hours trying various installs of Java and reading google and this forum, and can't find anything helpful.
I'm on Windows 10 and have run Sikuli before without issue. Should I just go back to the old version, or is there something I can do?

Is there an order of operations when launching all the jar files? Also, it's really confusing on the Java site as to which version to download - JRE, JDK, SE, etc. Which should I download? I use Jython in the IDE, which is why I though JDK would be correct.

Question information

Language:
English Edit question
Status:
Solved
For:
SikuliX Edit question
Assignee:
No assignee Edit question
Solved by:
Maryjo
Solved:
Last query:
Last reply:
Revision history for this message
RaiMan (raimund-hocke) said :
#1

Supposing we are talking about the SikuliX download page and version 1.1.4:

- you have some folder to where you have
- downloaded the sikulix.jar (the IDE)
- downloaded Jython (getting jython-standalone-2.7.1.jar)

next you have checked on a command line, that java -version tells, that you have a 64-Bit Java running (BTW: for Java 8, the latest version is -170+). Wether it is a JRE or a JDK does not matter for only using the SikuliX IDE.

then you can try to double-click sikulix.jar (... and nothing else).

If you want to see more, then on a command line:
jave -jar path-to/sikulix.jar -v
which produces some startup debug information.

Revision history for this message
Maryjo (mjskeet2) said :
#2

Thank you. I corrected the Java path, and it found the jar files.

But now I've only got the splash screen ("SikuliX-IDE is starting), and it's just sitting there. I had lunch and came back, and the splash screen hasn't changed. I killed the process and started Sikuli again, and it froze at the splash screen again. Is there something else missing?

My SikuliX directory now only shows the sikulix.jar and the sikulixapi.jar. The Jython jar went away by itself, which I assume is expected.

Revision history for this message
RaiMan (raimund-hocke) said :
#3

what about running from command line:

jave -jar path-to/sikulix.jar -v

Revision history for this message
Maryjo (mjskeet2) said :
#4

I get a fatal exception:

C:\SikuliX>java -jar ./sikulix.jar -v
[DEBUG] RunIDE: Running: /C:/SikuliX/sikulix.jar
[DEBUG] RunIDE: AppData: C:\Users\mzy44736.000\AppData\Roaming\Sikulix
[DEBUG] RunIDE: starting
[DEBUG] RunIDE: looking for extension jars in: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions
[DEBUG] RunIDE: adding extension: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar
[234 debug] Sikulix: starting IDE
***** show environment for 1.1.4-SNAPSHOT-#248-2019-03-18_08:41 IDE
user.home: C:\Users\mzy44736.000
user.dir (work dir): C:\SikuliX
user.name: maryjo.skeet
java.io.tmpdir: C:\Users\mzy44736.000\AppData\Local\Temp
running 64Bit(amd64) on Windows (10.0) from a jar
java 8 version 1.8 vm 25.202-b08 class 52.0 arch 64
app data folder: C:\Users\mzy44736.000\AppData\Roaming\Sikulix
executing jar: C:\SikuliX\sikulix.jar
*** classpath dump sikulix
  0: file:/C:/SikuliX/sikulix.jar
  1: file:/C:/Users/mzy44736.000/AppData/Roaming/Sikulix/Extensions/jython-standalone-2.7.1.jar
*** classpath dump end
***** show environment end
[624 debug] init user preferences
[625 debug] IDE: running with Locale: en_US
[625 debug] --- Sikuli parameters ---
[626 debug] 1: -v
[628 debug] HotkeyManager: add Capture Hotkey: CTRL+SHIFT 2 (50, 3)
[637 debug] HotkeyManager: add Abort Hotkey: ALT+SHIFT C (67, 9)
[638 debug] IDE: Init ScriptingSupport
[640 debug] ScriptingSupport: initScriptingSupport: enter
[642 debug] IDE: Reading Preferences
[682 debug] Screen: initScreens: starting
[683 debug] Screen: Accessing: GraphicsEnvironment.getLocalGraphicsEnvironment()
[683 debug] Screen: Accessing: GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
[684 debug] Screen: ScreenDevice 0 has (0,0) --- will be primary Screen(0)
[685 debug] Screen: Monitor 0: (0, 0) 1680 x 1050
[686 debug] Screen: Monitor 1: (0, -1050) 1680 x 1050
[686 debug] Screen: Monitor 2: (1680, -1050) 1680 x 1050
[687 debug] Screen: Monitor 3: (1680, 0) 1680 x 1050
[689 debug] Mouse: init start
Exception in thread "main" java.lang.NullPointerException
        at org.sikuli.script.Location.getScreen(Location.java:136)
        at org.sikuli.script.Mouse.move(Mouse.java:391)
        at org.sikuli.script.Mouse.move(Mouse.java:372)
        at org.sikuli.script.Mouse.init(Mouse.java:60)
        at org.sikuli.script.Screen.initScreens(Screen.java:141)
        at org.sikuli.script.Screen.hasPoint(Screen.java:112)
        at org.sikuli.script.RunTime.hasPoint(RunTime.java:442)
        at org.sikuli.ide.SikuliIDE.initSikuliIDE(SikuliIDE.java:278)
        at org.sikuli.ide.SikuliIDE.run(SikuliIDE.java:257)
        at org.sikuli.ide.SikulixRunIDE.main(SikulixRunIDE.java:40)
[3318 debug] RunTimeIDE: resourceLocation: (class org.sikuli.script.RunTime) /Lib/sikuli
[3320 debug] RunTimeIDE: resourceList: having jar: jar:file:/C:/SikuliX/sikulix.jar!/Lib/sikuli
[5050 debug] RunTimeIDE: files exported: 7 from: Lib/sikuli to:
 C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli
[5052 debug] JythonSupport: init: starting
[5053 debug] JythonSupport: init: success
[5054 debug] JythonSupport: added as Jython::sys.path[0]:
C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\site-packages
[5056 debug] JythonSupport: ***** Jython sys.path
 0: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\site-packages
 1: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib
 2: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\Lib
 3: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar\Lib
 4: __classpath__
 5: __pyclasspath__/
[5058 debug] JythonSupport: ***** Jython sys.path end
[5169 debug] Jython: sikuli: Sikuli: starting init
[0 TRACE] Jython: sikuli: Sikuli: backports from Version 2: Do
[6 TRACE] Jython: sikuli: Sikuli: RunTime, Setting, Debug
[15 TRACE] Jython: sikuli: Sikuli: constants
[82 TRACE] Jython: sikuli: Sikuli: import Region
[55 TRACE] Jython: sikuli: Sikuli: import Screen
[13 TRACE] Jython: sikuli: Sikuli: import ScreenUnion
[7 TRACE] Jython: sikuli: Sikuli: import Location, Offset
[14 TRACE] Jython: sikuli: Sikuli: import Finder
[8 TRACE] Jython: sikuli: Sikuli: import TextRecognizer
[10 TRACE] Jython: sikuli: Sikuli: import Match
[9 TRACE] Jython: sikuli: Sikuli: import ImagePath
[6 TRACE] Jython: sikuli: Sikuli: import Pattern
[8 TRACE] Jython: sikuli: Sikuli: import Image
[8 TRACE] Jython: sikuli: Sikuli: Env.addHotkey
[39 TRACE] Jython: sikuli: Sikuli: import App
[10 TRACE] Jython: sikuli: Sikuli: import KeyBoard/Mouse
[69 TRACE] Jython: sikuli: Sikuli: import from compare
[13 TRACE] Jython: sikuli: Sikuli: init SikuliImporter
[34 TRACE] Jython: sikuli: Sikuli: import Sikulix
[10 TRACE] Jython: sikuli: Sikuli: import ScriptingSupport
[16 TRACE] Jython: sikuli: Sikuli: import ADBScreen
[10 TRACE] Jython: requested to use as default region: R[0,0 1680x1050]@S(0)
[1 TRACE] Sikuli: _exposeAllMethods: R[0,0 1680x1050]@S(0) called from: sikuli.Sikuli
[233 TRACE] Jython: after _exposeAllMethods
Exception in thread "Thread-3" org.sikuli.script.SikuliXception: fatal: JythonSupport: JythonScriptRunner: cannot be initialized:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli\__init__.py", line 4, in <module>
    from Sikuli import *
  File "C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli\Sikuli.py", line 677, in <module>
    ALL = JScreen.all().getRegion()
        at org.sikuli.script.Screen.getValidMonitor(Screen.java:344)
        at org.sikuli.script.Screen.getBounds(Screen.java:405)
        at org.sikuli.script.ScreenUnion.<init>(ScreenUnion.java:24)
        at org.sikuli.script.Screen.all(Screen.java:254)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
java.lang.NullPointerException: java.lang.NullPointerException

        at org.sikuli.script.RunTime.terminate(RunTime.java:72)
        at org.sikuli.script.Sikulix.terminate(Sikulix.java:51)
        at org.sikuli.util.JythonHelper.terminate(JythonHelper.java:45)
        at org.sikuli.scriptrunner.JythonScriptRunner.init(JythonScriptRunner.java:121)
        at org.sikuli.scriptrunner.ScriptingSupport$ScriptRunnerInit.run(ScriptingSupport.java:289)
        at org.sikuli.scriptrunner.ScriptingSupport$ScriptRunnerInit.run(ScriptingSupport.java:268)

Revision history for this message
Maryjo (mjskeet2) said :
#5

I get a fatal exception:

C:\SikuliX>java -jar ./sikulix.jar -v
[DEBUG] RunIDE: Running: /C:/SikuliX/sikulix.jar
[DEBUG] RunIDE: AppData: C:\Users\mzy44736.000\AppData\Roaming\Sikulix
[DEBUG] RunIDE: starting
[DEBUG] RunIDE: looking for extension jars in: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions
[DEBUG] RunIDE: adding extension: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar
[234 debug] Sikulix: starting IDE
***** show environment for 1.1.4-SNAPSHOT-#248-2019-03-18_08:41 IDE
user.home: C:\Users\mzy44736.000
user.dir (work dir): C:\SikuliX
user.name: maryjo.skeet
java.io.tmpdir: C:\Users\mzy44736.000\AppData\Local\Temp
running 64Bit(amd64) on Windows (10.0) from a jar
java 8 version 1.8 vm 25.202-b08 class 52.0 arch 64
app data folder: C:\Users\mzy44736.000\AppData\Roaming\Sikulix
executing jar: C:\SikuliX\sikulix.jar
*** classpath dump sikulix
  0: file:/C:/SikuliX/sikulix.jar
  1: file:/C:/Users/mzy44736.000/AppData/Roaming/Sikulix/Extensions/jython-standalone-2.7.1.jar
*** classpath dump end
***** show environment end
[624 debug] init user preferences
[625 debug] IDE: running with Locale: en_US
[625 debug] --- Sikuli parameters ---
[626 debug] 1: -v
[628 debug] HotkeyManager: add Capture Hotkey: CTRL+SHIFT 2 (50, 3)
[637 debug] HotkeyManager: add Abort Hotkey: ALT+SHIFT C (67, 9)
[638 debug] IDE: Init ScriptingSupport
[640 debug] ScriptingSupport: initScriptingSupport: enter
[642 debug] IDE: Reading Preferences
[682 debug] Screen: initScreens: starting
[683 debug] Screen: Accessing: GraphicsEnvironment.getLocalGraphicsEnvironment()
[683 debug] Screen: Accessing: GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
[684 debug] Screen: ScreenDevice 0 has (0,0) --- will be primary Screen(0)
[685 debug] Screen: Monitor 0: (0, 0) 1680 x 1050
[686 debug] Screen: Monitor 1: (0, -1050) 1680 x 1050
[686 debug] Screen: Monitor 2: (1680, -1050) 1680 x 1050
[687 debug] Screen: Monitor 3: (1680, 0) 1680 x 1050
[689 debug] Mouse: init start
Exception in thread "main" java.lang.NullPointerException
        at org.sikuli.script.Location.getScreen(Location.java:136)
        at org.sikuli.script.Mouse.move(Mouse.java:391)
        at org.sikuli.script.Mouse.move(Mouse.java:372)
        at org.sikuli.script.Mouse.init(Mouse.java:60)
        at org.sikuli.script.Screen.initScreens(Screen.java:141)
        at org.sikuli.script.Screen.hasPoint(Screen.java:112)
        at org.sikuli.script.RunTime.hasPoint(RunTime.java:442)
        at org.sikuli.ide.SikuliIDE.initSikuliIDE(SikuliIDE.java:278)
        at org.sikuli.ide.SikuliIDE.run(SikuliIDE.java:257)
        at org.sikuli.ide.SikulixRunIDE.main(SikulixRunIDE.java:40)
[3318 debug] RunTimeIDE: resourceLocation: (class org.sikuli.script.RunTime) /Lib/sikuli
[3320 debug] RunTimeIDE: resourceList: having jar: jar:file:/C:/SikuliX/sikulix.jar!/Lib/sikuli
[5050 debug] RunTimeIDE: files exported: 7 from: Lib/sikuli to:
 C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli
[5052 debug] JythonSupport: init: starting
[5053 debug] JythonSupport: init: success
[5054 debug] JythonSupport: added as Jython::sys.path[0]:
C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\site-packages
[5056 debug] JythonSupport: ***** Jython sys.path
 0: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\site-packages
 1: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib
 2: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\Lib
 3: C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar\Lib
 4: __classpath__
 5: __pyclasspath__/
[5058 debug] JythonSupport: ***** Jython sys.path end
[5169 debug] Jython: sikuli: Sikuli: starting init
[0 TRACE] Jython: sikuli: Sikuli: backports from Version 2: Do
[6 TRACE] Jython: sikuli: Sikuli: RunTime, Setting, Debug
[15 TRACE] Jython: sikuli: Sikuli: constants
[82 TRACE] Jython: sikuli: Sikuli: import Region
[55 TRACE] Jython: sikuli: Sikuli: import Screen
[13 TRACE] Jython: sikuli: Sikuli: import ScreenUnion
[7 TRACE] Jython: sikuli: Sikuli: import Location, Offset
[14 TRACE] Jython: sikuli: Sikuli: import Finder
[8 TRACE] Jython: sikuli: Sikuli: import TextRecognizer
[10 TRACE] Jython: sikuli: Sikuli: import Match
[9 TRACE] Jython: sikuli: Sikuli: import ImagePath
[6 TRACE] Jython: sikuli: Sikuli: import Pattern
[8 TRACE] Jython: sikuli: Sikuli: import Image
[8 TRACE] Jython: sikuli: Sikuli: Env.addHotkey
[39 TRACE] Jython: sikuli: Sikuli: import App
[10 TRACE] Jython: sikuli: Sikuli: import KeyBoard/Mouse
[69 TRACE] Jython: sikuli: Sikuli: import from compare
[13 TRACE] Jython: sikuli: Sikuli: init SikuliImporter
[34 TRACE] Jython: sikuli: Sikuli: import Sikulix
[10 TRACE] Jython: sikuli: Sikuli: import ScriptingSupport
[16 TRACE] Jython: sikuli: Sikuli: import ADBScreen
[10 TRACE] Jython: requested to use as default region: R[0,0 1680x1050]@S(0)
[1 TRACE] Sikuli: _exposeAllMethods: R[0,0 1680x1050]@S(0) called from: sikuli.Sikuli
[233 TRACE] Jython: after _exposeAllMethods
Exception in thread "Thread-3" org.sikuli.script.SikuliXception: fatal: JythonSupport: JythonScriptRunner: cannot be initialized:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli\__init__.py", line 4, in <module>
    from Sikuli import *
  File "C:\Users\mzy44736.000\AppData\Roaming\Sikulix\Lib\sikuli\Sikuli.py", line 677, in <module>
    ALL = JScreen.all().getRegion()
        at org.sikuli.script.Screen.getValidMonitor(Screen.java:344)
        at org.sikuli.script.Screen.getBounds(Screen.java:405)
        at org.sikuli.script.ScreenUnion.<init>(ScreenUnion.java:24)
        at org.sikuli.script.Screen.all(Screen.java:254)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
java.lang.NullPointerException: java.lang.NullPointerException

        at org.sikuli.script.RunTime.terminate(RunTime.java:72)
        at org.sikuli.script.Sikulix.terminate(Sikulix.java:51)
        at org.sikuli.util.JythonHelper.terminate(JythonHelper.java:45)
        at org.sikuli.scriptrunner.JythonScriptRunner.init(JythonScriptRunner.java:121)
        at org.sikuli.scriptrunner.ScriptingSupport$ScriptRunnerInit.run(ScriptingSupport.java:289)
        at org.sikuli.scriptrunner.ScriptingSupport$ScriptRunnerInit.run(ScriptingSupport.java:268)

Revision history for this message
Maryjo (mjskeet2) said :
#6

I ran the line from the sikuli directory as java -jar sikulix.jar -v, and the IDE started. I think I'm ok!

Revision history for this message
Maryjo (mjskeet2) said :
#7

I was playing around with Sikuli and found something you might care about.

I have four monitors. If I initiate Sikuli from monitor 1, everything works. If I initiate Sikuli from any of the other monitors, I get the errors I posted above and the IDE never starts. You can see that the exception is within the mouse initialization. It doesn't matter if I'm launching Sikuli from the command line or by double-clicking the jar file. I have to launch from monitor 1 to use it.

I can put the IDE on any monitor once it is running. The matching preview function can find an image on any monitor. However, when Sikuli runs, it only finds images on monitor 1.

Revision history for this message
RaiMan (raimund-hocke) said :
#8

thanks for feedback.

This is surely a bug.