Sono completamente nuovo alla programmazione batch di Windows. Quello che voglio ottenere è scrivere uno script di avvio per un'applicazione Java. Eppure, non si avvia l'applicazione Java, ma stampa leWindows batch & java: combinazione -XX: comando OnOutOfMemoryError e parametri batch
Usage: java [-opzioni] Classe [args ...]
(per eseguire una classe)
o Java [-opzioni] -jar jarFile [args ...]
(per eseguire un file jar)
...
che indica che i miei parametri non sono riconosciuti correttamente.
Ecco il mio MCVE per lo script non-lavoro:
set memory=600000
java -XX:OnOutOfMemoryError="taskkill /PID %p" -Xmx%memory%K -jar MyApp.jar
Nello scenario reale, memory
è calcolato per impostare la dimensione heap massima ottimale per l'applicazione.
Lasciando uno di entrambi i parametri, l'app viene avviata. Così
java -XX:OnOutOfMemoryError="taskkill /PID %p" -jar MyApp.jar
e
set memory=600000
java -Xmx%memory%K -jar MyApp.jar
opere, ma ho bisogno di entrambi i parametri per lavorare in una sola chiamata.
Prova a mettere '@echo on' /' @ eco off' nella vostra script ([qui descritto] (http://stackoverflow.com/a/10237457/3788176)) e vedere quale comando è effettivamente in esecuzione nel caso "both parameters". –
Grazie per l'input! Usando '@echo on' si ottiene la stampa' java -XX: OnOutOfMemoryError = "taskkill/PID memoryK -jar MyApp.jar', che indica un errore con' "', che non è più chiuso, e il parametro, che è non aggiunto ('% memoria%)' ... –
Quello che sembra sta succedendo c'è il '%' in '% p' è considerato un" opening "'% 'per la sostituzione - Penso che' %%' sia il token per un singolo '%' (come in ' metodi simili a printf'). –