视窗批处理及;java:将-XX:OnOutOfMemoryError命令和批处理参数组合在一起
我对Windows批处理编程一无所知。 我想要实现的是为Java应用程序编写一个启动脚本。然而,它并不启动Java应用程序,而是打印出来 用法:java[-options]类[args…] (执行一个类) 或java[-options]-jar jarfile[args…] (执行jar文件) 这表明我的参数无法正确识别视窗批处理及;java:将-XX:OnOutOfMemoryError命令和批处理参数组合在一起,java,windows,batch-file,parameters,Java,Windows,Batch File,Parameters,我对Windows批处理编程一无所知。 我想要实现的是为Java应用程序编写一个启动脚本。然而,它并不启动Java应用程序,而是打印出来 用法:java[-options]类[args…] (执行一个类) 或java[-options]-jar jarfile[args…] (执行jar文件) 这表明我的参数无法正确识别 以下是我对不工作脚本的建议: set memory=600000 java -XX:OnOutOfMemoryError="taskkill /PID %p&qu
以下是我对不工作脚本的建议:
set memory=600000
java -XX:OnOutOfMemoryError="taskkill /PID %p" -Xmx%memory%K -jar MyApp.jar
在实际场景中,计算内存
,以设置应用程序的最佳最大堆大小
省略这两个参数中的一个将启动应用程序。所以
java -XX:OnOutOfMemoryError="taskkill /PID %p" -jar MyApp.jar
及
可以工作,但我需要两个参数才能在一个调用中工作。如果在脚本中打开
@echo
和关闭@echo
,则可以看到实际执行的命令
您说生成的命令是:
java -XX:OnOutOfMemoryError="taskkill /PID memoryK -jar MyApp.jar
这使得它看起来像是%p
的%
被视为替代的“开口”%
除了引号不平衡外,这意味着您实际上没有给java
一个运行命令--jar MyApp.jar
实际上在-XX:onAutofmemoryError
字符串中
尝试将单个%%
替换为%%
——根据,这就是如何在BAT文件中写入文本%%
:
java -XX:OnOutOfMemoryError="taskkill /PID %%p" -Xmx%memory%K -jar MyApp.jar
尝试在脚本()中启用
@echo
/@echo off
,然后查看在“两个参数”的情况下它实际执行的命令。感谢您的输入!在上使用@echo会导致打印java-XX:onAutofmemoryError=“taskkill/PID memoryK-jar MyApp.jar
,这表明“
中存在错误,不再关闭,参数也没有添加(%memory%)
…看起来发生的事情是%p
中的%
被认为是替代的“开口”%
-我认为%
是单个%
的标记(就像printf
类似方法中的那样)。我刚刚写了一条评论,这解决了问题!ONAUTOFMEMORYERROR参数中的第一个%%
必须使用%%
进行转义。谢谢没问题。请考虑接受这个答案:“不,我不会!”开个玩笑,我得等几分钟才能做到:P
java -XX:OnOutOfMemoryError="taskkill /PID %%p" -Xmx%memory%K -jar MyApp.jar