簡體   English   中英

為什么Java的自動計划的應用程序無法在Windows上啟動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM