0

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

4

2 回答 2

0

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

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

于 2015-10-01T07:46:32.607 回答
0

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

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

于 2015-10-02T08:34:36.987 回答