Java 通知弹出窗口不';不能使用单个实例运行
我想在用户第二次尝试运行应用程序时显示弹出的通知,所以我创建NotificationPop obj并调用该方法在我的单实例类中显示对话框,但是,当应用程序第二次运行时,它不会显示弹出窗口。我的NotificationPop窗口没有问题。它功能正常。但是,当我在单个实例中调用它时,它不会显示。在Netbeans的“输出”窗口中,它显示的对话框也已关闭。我有没有错过任何一步Java 通知弹出窗口不';不能使用单个实例运行,java,swing,single-instance,Java,Swing,Single Instance,我想在用户第二次尝试运行应用程序时显示弹出的通知,所以我创建NotificationPop obj并调用该方法在我的单实例类中显示对话框,但是,当应用程序第二次运行时,它不会显示弹出窗口。我的NotificationPop窗口没有问题。它功能正常。但是,当我在单个实例中调用它时,它不会显示。在Netbeans的“输出”窗口中,它显示的对话框也已关闭。我有没有错过任何一步 import java.io.File; import java.io.IOException; import java.io
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class SingleInstance {
public static File f;
public static FileChannel channel;
public static FileLock lock;
public static TrayCon trayobj;
public static boolean checkstatus;
public static NotificationPop obj;
public static void main(String args[]) throws IOException {
try {
f = new File("key");
if (f.exists()) {
f.delete();
}
channel = new RandomAccessFile(f, "rw").getChannel();
lock = channel.tryLock();
if (lock == null) {
obj = new NotificationPop();
obj.displaypopupmessage();
System.exit(0);
channel.close();
throw new RuntimeException("Only 1 instance can run");
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
trayobj = new TrayCon();
trayobj.CreateTrayCon(trayobj);
}
});
} catch (IOException ex) {
}
}
}
好的,我已经添加了线程睡眠6秒,修复了这个问题
if (lock == null) {
obj = new NotificationPop();
obj.proragramstatuswarning();
Thread.sleep(6000);
System.exit(0);
channel.close();
throw new RuntimeException("Only 1 instance can run");
}
为什么要删除该文件(特别是在锁定部分之外)?您的意思是,如果是片段,让我将其添加到那里,我确信我在这里发布了两个(-3)个不同的代码,它们以SSCCE/MCVE格式(最重要)表示单实例文件IO/Socket/???,从你的代码是不可能的建议something@mad如果文件夹中已经存在文件,程序员应避免重复应用此问题可能对您有用: