1

私はコンボを作りました:

$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 として読み取られます。

4

1 に答える 1

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されました:

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);
   }
}
于 2013-07-23T22:50:40.837 に答える