[英]Why an auto scheduled app from Java didn't start on Windows?
我有一個應該啟動第二個JVM的Java Swing應用程序,我的代碼如下所示:
public class App_A implements Runnable
{
...
public static void start2ndJVM() throws Exception
{
String separator=System.getProperty("file.separator"),classpath=System.getProperty("java.class.path"),path=System.getProperty("java.home")+separator+"bin"+separator+"java";
pb=new ProcessBuilder(path,"-cp",classpath,App_B.class.getName(),"Auto Exit !");
pb.directory(new File("Dir_Data"));
File log=new File("Log.txt");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
}
public void run()
{
try
{
Timer.Start();
while (true)
{
Thread.sleep(60*1000); // Sleep for 1 minute
if (Timer.getTimeFormat(-1,2).equals("23:00")) start2ndJVM(); // 18:28 Run every night at 11 PM to update stock data
}
}
catch (Exception e) { e.printStackTrace(); }
}
...
}
Timer.getTimeFormat沒問題,我在看屏幕時已經對其進行了多次測試,App_A啟動,到我指定的時間,它將啟動第二個JVM,並且App_B像我將啟動的那樣想看,但是問題是我將其設置為在晚上11點運行,而當我不在屏幕前時,它無法運行,我認為是Windows的睡眠功能導致了問題,我的監視器如果15分鍾內沒有任何操作,就進入睡眠狀態,屏幕變黑,但是我將PC設置為不進入睡眠狀態,因此我想知道是否由於顯示器的關閉導致我的應用無法按時運行? 因為當我早上回來並稍微移動鼠標時,監視器將醒來,並且我可以看到我的App_A仍在屏幕上運行,所以它確實在晚上11點啟動了App_B,為什么?
我忘了提一下,我將App_A和App_B震擊到一個jar文件中,並將該jar文件放入Windows 7的啟動目錄中,然后重新啟動了PC,在PC重新啟動后,我的App_A立即開始運行,但是在監視器轉到睡眠,App_A無法在晚上11點准時自動啟動App_B。
OK,找到了問題,我還需要將包含所需jar文件的lib目錄復制到Startup目錄中,以使其正確運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.