使用Sikuli的openApp方法的EXCEPTION_ACCESS_VIOLATION

时间:2015-10-01 07:34:20

标签: java batch-file sikuli sikuli-script

我正在使用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的问题。

2 个答案:

答案 0 :(得分:0)

根据你所展示的内容,sikuli调用Win32utils失败的本机代码。这就是Java在C代码中报告崩溃的方式。

你很可能忘记了一些配置位。

答案 1 :(得分:0)

我在openApp()上遇到了类似的问题,但是在OS X上。作为解决方法,我使用旧版本的Sikuli(1.0.1)。

https://bugs.launchpad.net/sikuli/+bug/1498949