Аргумент Autoit Java в команде запуска через переменную $chosen

Я сделал комбо:

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

Затем я добавил кое-что, чтобы прочитать это:

$chosen = GUICtrlRead($Combo1)

Затем я сделал команду запуска и поместил в нее $chosen:

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

Когда я не выбираю вариант в раскрывающемся списке, он запускается. Когда я это делаю, появляется окно, которое мгновенно исчезает, но показывает все допустимые параметры, поэтому что-то не так в том, как оно его читает. Я думаю, что это как-то связано с... но я не знаю, как мне это сделать. Я пытался использовать -, а затем переменную, но тогда она читается как -$chosen вместо "-" + "выбор в $chosen".


person EpicKnarvik97    schedule 23.07.2013    source источник


Ответы (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);
   }
}
person Hovercraft Full Of Eels    schedule 23.07.2013
comment
Я немного протестировал и понял, что это что-то с тем, что было первым и последним, и прочее. Я не проверял, получает ли программа оперативную память, но для ее работы требуется одно из желаемых объемов оперативной памяти. Это не имело ничего общего с попыткой взять слишком много оперативной памяти. Решение было таким: Run(java & $chosen & ' -jar E:\Spill\Все разливы\Minecraft\KnarCraft 2013\spigot-1.6.2-R0.1.jar',E:\Spill\Все разливы\Minecraft\ KnarCraft 2013) Спасибо @hovercraft - person EpicKnarvik97; 24.07.2013