我正在使用Sikuli-api来自动化独立应用程序。此应用程序在运行*.bat
文件时启动。在代码中我打开这个应用程序:
m_sikscr=new SikuliScript();
m_sikscr.openApp("path of bat file");
我在这个openApp()命令中遇到异常。
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x515ee11e, pid=3992, tid=5868
#
# JRE version: Java(TM) SE Runtime Environment (8.0_20-b26) (build 1.8.0_20-b26)
# Java VM: Java HotSpot(TM) Client VM (25.20-b23 mixed mode windows-x86 )
然而,当我尝试通过以下代码行打开相同的bat文件时,它会成功打开。:
String[] command = {"cmd.exe", "/C", "Start", "*.bat"};
Runtime r = Runtime.getRuntime();
Process p = r.exec(command);
p.waitFor();
下面是堆栈跟踪:
Stack: [0x00d50000,0x00da0000], sp=0x00d9edc8, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xce11e]
C [Win32Util.dll+0x147d]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.sikuli.script.Win32Util.openApp(Ljava/lang/String;)I+0
j org.sikuli.script.App.open()Lorg/sikuli/script/App;+19
j org.sikuli.script.App.open(Ljava/lang/String;)Lorg/sikuli/script/App;+8
j org.sikuli.script.SikuliScript.openApp(Ljava/lang/String;)I+1
j testpack.OmsTest.openOMS()V+1509
v ~StubRoutines::call_stub
我无法理解它是否是bat文件或Sikuli的问题。
答案 0 :(得分:0)
根据你所展示的内容,sikuli调用Win32utils失败的本机代码。这就是Java在C代码中报告崩溃的方式。
你很可能忘记了一些配置位。
答案 1 :(得分:0)
我在openApp()上遇到了类似的问题,但是在OS X上。作为解决方法,我使用旧版本的Sikuli(1.0.1)。