Jestem całkowicie nowym programistą wsadowym Windows. Co chcę osiągnąć, to napisać skrypt startowy dla aplikacji Java. Mimo, że nie uruchomić aplikację Java, ale wypisujeWindows batch & java: Łączenie -XX: Komenda OnOutOfMemoryError i parametry wsadowe
Wykorzystanie: Java [-options] Klasa args [...]
(wykonać klasę)
lub Java [-options] -jar jarfile [args ...]
(aby wykonać plik jar)
...
co oznacza, że moje parametry nie są poprawnie rozpoznane.
Oto moja MCVE za scenariusz nie-obrotowego:
set memory=600000
java -XX:OnOutOfMemoryError="taskkill /PID %p" -Xmx%memory%K -jar MyApp.jar
W realnym scenariuszu memory
obliczana jest, aby ustawić optymalną maksymalną wielkość sterty dla aplikacji.
Pozostawienie jednego z dwóch parametrów powoduje uruchomienie aplikacji. Więc
java -XX:OnOutOfMemoryError="taskkill /PID %p" -jar MyApp.jar
i
set memory=600000
java -Xmx%memory%K -jar MyApp.jar
prace, ale muszę oba parametry do pracy w jednej rozmowy.
spróbuj umieścić '@echo on' /' @ echo off' w swojej skrypt ([opisany tutaj] (http://stackoverflow.com/a/10237457/3788176)) i zobacz, jakie polecenie faktycznie wykonuje w przypadku "obu parametrów". –
Dzięki za wejście! Użycie '@echo on' powoduje drukowanie' java -XX: OnOutOfMemoryError = "taskkill/PID memoryK -jar MyApp.jar', co wskazuje na błąd z' '', który nie jest już zamknięty, oraz parametr, który jest nie dodane ('% pamięci%)' ... –
Wygląda na to, że '%' w '% p' jest uważane za" otwarcie "'% 'dla podstawienia - myślę, że' %% 'jest tokenem dla pojedynczego'% '(jak w' metody podobne do printf'ów). –