命令行java应用程序,调度任务,留下自由的cmd/终端,并在计划的时间做任务



我试图在java中使用spring和picocli做一个cli应用程序,你在cmd上启动它,并通过一个对话框做一些配置来编程任务,(在这种情况下显示一个"警报消息"在同一命令行下。)我使用定时器和TimerTask,它的工作,但我不能做任何其他的cmd,直到应用程序做这个任务和完成。

我喜欢的是配置任务,完成这个配置对话框,能够用命令行做任何其他事情,并在计划的日期和时间在cmd上打印消息或每XX分钟循环消息。

我花了很多时间试图寻找解决方案,但可能这是不可能的…

其他选项,我认为可能会是一个很好的解决方案是一种方法,使用自定义命令从任何地方在cmd(作为环境变量),并与应用程序在后台运行持续交互。这样,cmd将只是在后台发送或接收该应用程序信息的通信方式。

但是,我也没有找到任何方法来做到这一点。

是否有办法做到这两个选项中的任何一个,或者你有其他的想法来完成这个任务?

提前感谢!

我已经找到了这个问题的另一个解决方案,但没有那么雄心勃勃。我把它留在这里,以防有人遇到类似的问题。

它包括制作一个具有报警功能的小新程序,并通过参数发送计划任务的日期和时间,在计划的时间,应用程序将发送带有警报的jOptionpanel:

public class Alarm {
public static void main(String[] args) {
String alarmDate = args[0];
String alarmTime = args[1];
LocalDateTime taskTime = LocalDateTime.parse(alarmDate + "T" + alarmTime);
Date taskTimeAsDate = Date.from(taskTime.atZone(ZoneId.systemDefault()).toInstant());
Timer timer = new Timer();
timer.schedule(setAlarm("Wake Up! Wake Up!"), taskTimeAsDate);  
}
private static TimerTask setAlarm(String message) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Component Jframe = null;
JOptionPane.showMessageDialog(Jframe, message, "Alarm Ringing", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
};
return timerTask;
}
}

我用ProcessBuilder从cli应用程序调用jar:

public void setAlarm(String alarmDate, String alarmTime) throws IOException {   
ProcessBuilder timer = new ProcessBuilder("java","-jar", "Alarm.jar", alarmDate, alarmTime);
timer.start();
}

这样,警报被安排和cmd自由!如果有人有其他的想法或解决方案,我真的很想知道!

相关内容

  • 没有找到相关文章

最新更新