Java 使用Sikuli的openApp方法时发生异常\u访问\u冲突

Java 使用Sikuli的openApp方法时发生异常\u访问\u冲突,java,batch-file,sikuli,sikuli-script,Java,Batch File,Sikuli,Sikuli Script,我正在使用自动化一个独立的应用程序。此应用程序在运行*.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(

我正在使用自动化一个独立的应用程序。此应用程序在运行*.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文件时,它成功打开:

下面是堆栈跟踪:


我无法理解这是否是bat文件或Sikuli的问题。

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


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

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


我设置了JPARAM=-Xms64M-Xmx512M-Dfile.encoding=UTF-8环境变量,从中得到了一些提示。目前,openApp方法不会使JVM崩溃。但我不确定JPARAM环境变量是否起了作用。在Java方面没有那么丰富的经验。谢谢你分享这个bug。正如我在下面的回答中所评论的,我设置了jparamenv。确实如此。你认为这会解决问题吗?因为JVM没有在openApp方法上崩溃。
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