我试图制作一个能够更新我正在制作的程序的启动器,但我遇到了一些问题。我希望启动器重量轻,所以我一直在使用timer.schedule(this, 0, checkVersionTime);
来检查新版本。 (确切的时间不是必需的。默认值是10秒)。
问题在于此代码
if(!isOutdated(lastModified, sFile))
continue;
if(scanner != null && !scanner.hasStopped())
scanner.requestStop();
if((scanner == null || scanner.hasStopped())){
downloadList.add(new QueuedFile(sUrl, fileId, sFile, lastModified));
}
scanner变量包含其他程序,调用requestStop将正确关闭程序而不是强行关闭它。如果是这样,在启动程序检测到程序关闭之前最多可能需要10秒,并从更新开始。
如何在致电requestStop()
后发射器位于那里并等待程序关闭后才能这样做?
编辑: 这就是其他程序的启动方式,我不确定它是否算作第二个JVM
public boolean load(File file){
try{
//Setup and load the class
URL[] urls = {file.toURI().toURL()};
URLClassLoader loader = new URLClassLoader(urls);
Class<?> clazz = loader.loadClass("scanner.Scanner");
scannerObject = clazz.getConstructor().newInstance();
return true;
}catch(Exception e){
return false;
}
}