我找到了这个问题的替代解决方案,但不那么雄心勃勃。我把它留在这里,以防有人遇到类似的问题。
它包括制作一个具有警报功能的小型新程序,并通过参数发送计划任务的日期和时间,在计划时间,应用程序将发送带有警报的 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免费!如果有人有其他想法或解决方案,我真的很想知道!