Spring Shell - команда Prompt завершается немедленно, не ждет ввода пользователя

Я пытаюсь создать приложение Spring Shell. Я могу успешно запустить свое приложение, но оно немедленно завершается при запуске и не ожидает ввода пользователя. Кажется, он не остается в методе promptLoop JLineShell.

Я строю банку с mainClassName = "org.springframework.shell.Bootstrap".

Мой spring-shell-plugin.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

 <context:component-scan base-package="com.zailab" />

</beans>

Мой основной класс:

public class Main {

public static void main(String[] args) throws IOException{
    Bootstrap.main(args);
}

}

Мой командный класс:

@Component
public class BuildCommand implements CommandMarker {

@CliAvailabilityIndicator({"echo"})
  public boolean isCommandAvailable() {
    return true;
  }

@CliCommand(value = "echo", help = "Echo a message")
 public String echo(
   @CliOption(key = { "", "msg" }, mandatory = true, help= "The message to echo") String msg) {
  return msg;
 }

}

2 ответа

Решение

Я понял, в чем проблема. Не пытайтесь запустить оболочку из IDE(точнее, STS). Кажется, EOF возвращается сразу при запуске приложения из IDE, отлично работает через командную строку.

Спасибо

Вы также можете запустить свое приложение в IDE, не возвращаясь сразу.

Вы должны поместить следующие параметры JVM в вашу конфигурацию запуска:

для *nix машин:

-Djline.terminal=org.springframework.shell.core.IdeTerminal

для машин Windows:

-Djline.WindowsTerminal.directConsole=false
-Djline.terminal=jline.UnsupportedTerminal
Другие вопросы по тегам