Хорошо мне удается сделать это вот так ...
public static void main(String[] args){
String PIDtoKill = readPIDFile();
if(!PIDtoKill.isEmpty())
killPID(PIDtoKill);
saveThisPIDtoFile();
}
Метод используется ....
private static String readPIDFile() {
try {
for (String line : Files.readAllLines(Paths.get("C:\\Users\\MyUser\\Desktop\\PIDsRunning.txt")))
return line;
}
catch (IOException e1) {
e1.printStackTrace();
}
return "";
}
private static void saveThisPIDtoFile() {
String pid = ManagementFactory.getRuntimeMXBean().getName();
pid = pid.substring(0, pid.indexOf("@"));
List<String> lines = Arrays.asList(pid);
Path file = Paths.get("C:\\Users\\MyUser\\Desktop\\PIDsRunning.txt");
try {
Files.write(file, lines, Charset.forName("UTF-8"));
}
catch (IOException e) {
e.printStackTrace();
}
}
private static void killPID(String pIDtoKill) {
try {
Runtime.getRuntime().exec("taskkill /F /PID " + pIDtoKill);
}
catch (IOException e) {
e.printStackTrace();
}
}
Обратите внимание, что [this] (http://stackoverflow.com/questions/660205/start-java-program-only-if-not-already-running) отвечает на ваш запрос. – VHS
'ServerB' потребует прав администратора для закрытия' ServerA'. –
Вызов 'pkill' может быть простым решением. Хотя это может быть проще сделать в сценарии оболочки, который обертывает вашу программу, а не создает ее на Java. –