我有一个 Spring boot 应用程序,它使用
java.util.Scanner
类来提示用户在启动期间确认某个操作。在intellij IDEA 的终端中打印日志时,此提示正常。但是在 java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1651)
服务器上将 spring boot 应用程序作为 jar
文件运行时,它会抛出异常 EC2
。
我正在使用命令
tail -f -n 500 log_current.log
实时获取启动日志的最新日志。使用的日志依赖是Log4j2
。下面是相关代码:
Scanner input = new Scanner(System.in);
System.out.println(" ");
System.out.println(" ");
do {
System.out.print("Please enter 'proceed' to continue or 'abort' to cancel startup:");
String output = input.nextLine();
if(!StringUtils.isBlank(output)) {
String formattedOutput = output.toLowerCase().trim();
if (formattedOutput.equals("proceed"))
break;
else if(formattedOutput.equals("abort"))
abortStartup();
else
log.info("invalid input, please retry.");
}
}while(true);
input.close();
这段代码在 Intellij IDEA 中运行时运行良好。提示
System.out.print("Please enter 'proceed' to continue or 'abort' to cancel startup:");
被打印出来,我可以输入继续或中止。但是在 EC2 服务器上运行应用程序时,此提示从未出现在日志中。相反,它会抛出上述异常java.util.NoSuchElementException
.
当应用程序在生产环境中作为 jar 文件运行时,如何提示用户输入值?我的猜测是
tail
只是不允许您在日志中输入值。但如果是这种情况,那么我应该使用哪个 linux 工具呢?
谢谢