为什么Java自动安排的应用程序无法在Windows上启动?

时间:2014-03-01 01:40:26

标签: java jvm monitoring sleep

我有一个应该启动第二个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分钟没有动作,屏幕变暗,但我设置我的电脑不能进入睡眠状态,所以我想知道显示器的停用会导致我的应用程序无法按时运行吗?因为当我早上回来并稍微移动鼠标时,显示器会被唤醒,我可以看到我的App_A仍然在屏幕上运行,它刚刚在晚上11点启动App_B,为什么?

我忘了提一下,我把App_A和App_B打到一个jar文件中,然后将该jar文件放入Windows 7的Startup目录中,然后重新启动PC,PC重新启动后,我的App_A立即开始运行,但是监视器进入休眠状态,App_A无法在晚上11点自动启动App_B。

1 个答案:

答案 0 :(得分:0)

好的,发现问题,我还需要将包含所需jar文件的lib目录复制到Startup目录中,以使其正常运行。