2013-07-23 31 views
1

我做了一个组合:的AutoIt的Java参数在运行命令选择的变量

$Combo1 = GUICtrlCreateCombo("Java Memory", 24, 872, 145, 25, $CBS_DROPDOWNLIST) 
GUICtrlSetData(-1, "-Xmx1024M|-Xmx2048M|-Xmx3072M|-Xmx4096M") 

然后我说什么来阅读:

$chosen = GUICtrlRead($Combo1) 

然后我做了一个运行命令,并把$选择其中:

Run ("java -jar spigot-1.6.2-R0.1.jar " & $chosen, "E:\Spill\Alle spill\Minecraft\KnarCraft 2013") 

当我不在下拉列表中选择一个选项时,它会启动。当我这样做时,会出现一个即刻消失的窗口,但它显示所有有效的参数,因此它读取它的方式有些问题。我认为这跟这个有关 - 但我不知道该怎么做。我尝试使用 - 然后是变量,但它然后读取它作为 - $选择而不是“ - ”+“选择$选择”。

回答

1
  • 首先,你的java命令行的顺序我认为很重要,所以-Xmx选项应该在“java”之后和“-jar”标记之前。
  • 接下来,我想知道你是否在尝试使用太多的内存。你有没有考虑用较小的值来测试它?

例如:

$Combo1 = GUICtrlCreateCombo("Java Memory", 10, 10, 142, 25, $CBS_DROPDOWNLIST) 
GUICtrlSetData(-1, "-Xmx100M|-Xmx200M|-Xmx400M|-Xmx800M|-Xmx1024M|-Xmx2048M|-Xmx3072M|-Xmx4096M") 

要是再看到任何数较少的工作,如果较大的数字打破了计划。

我的测试程序:

AutoIt的程序,MyFoo.au3:

#include <ComboConstants.au3> 
#include <GUIConstantsEx.au3> 

Example() 

Func Example() 
    Local $msg 
    GUICreate("My GUI combo") ; will create a dialog box that when displayed is centered 

    $Combo1 = GUICtrlCreateCombo("Java Memory", 10, 10, 142, 25, $CBS_DROPDOWNLIST) 
    GUICtrlSetData(-1, "-Xmx100M|-Xmx200M|-Xmx400M|-Xmx800M|-Xmx1024M|-Xmx2048M|-Xmx3072M|-Xmx4096M") 

    GUISetState() 

    ; Run the GUI until the dialog is closed 
    While 1 
     $msg = GUIGetMsg() 
     If $msg = $Combo1 Then 
      $chosen = GUICtrlRead($Combo1) 
      $runString1 = "java " & $chosen & " -jar MyFoo.jar" 
      $runString2 = "java -jar MyFoo.jar " & $chosen 
      ConsoleWrite($runString1 & @CRLF) 
      Run($runString1) 
     EndIf 

     If $msg = $GUI_EVENT_CLOSE Then ExitLoop 
    WEnd 
EndFunc 

Java测试程序,MyAutoItFoo.java。当然,这是第一个jar'd:

import javax.swing.JOptionPane; 

public class MyAutoItFoo { 
    public static void main(String[] args) { 
     long heapSize = Runtime.getRuntime().totalMemory(); 
     long heapMaxSize = Runtime.getRuntime().maxMemory(); 
     String heapString = String.format("Heap Size = %H; Max Heap = %H", 
      heapSize, heapMaxSize); 
     System.out.println(heapString); 
     JOptionPane.showMessageDialog(null, heapString); 
    } 
} 
+0

我测试了一下,发现它是somrthing什么是第一个和最后一个东西。我没有检查过该程序是否获得了内存,但它必须是它工作所需的内存量之一。这与它试图占用太多内存毫无关系。解决方法是:运行(“java”&$选择&'-jar“E:\溢出\所有溢出\ Minecraft \ KnarCraft 2013 \ spigot-1.6.2-R0.1.jar”',“E:\ Spill \所有泄漏\ Minecraft \ KnarCraft 2013“)感谢@ hovercraft – EpicKnarvik97