我使用Java创建了一个控制台应用程序,然后将其导出为可运行的JAR文件。但是,当我运行JAR文件时,自动化已完成,但“Java(TM)Platform SE二进制文件”仍在后台,我试图放置System.exit(0)
但仍然无法终止过程
我也试图在每15分钟无限期重复一次在任务计划程序中自动运行,问题是自“Java(TM)Platform SE二进制文件” 15分钟后它将无法再次运行>仍在进行中,并将其状态确定为正在运行。
我非常确定我的所有自动化任务都已完成,没有错误,也没有创建另一个线程。
以下是我的代码:
public static void main(String[] args) {
String jarName = new File(Selenium.class.getProtectionDomain().getCodeSource().getLocation().getPath())
.getName();
System.out.println("Running " + jarName + " Automation");
if (args.length >= 1 && args[0].toLowerCase().equals("-run")) {
for (int i = 1; i < args.length; i++) {
String pram = args[i].replace(jarName + "_", "");
if (pram.toLowerCase().equals("all")) {
GFC.execute("Login");
GFC.execute("SwitchIntegration");
GFC.execute("BODActivate");
GFC.execute("Users");
GFC.execute("Settings");
GFC.execute("AccountingEntityRegistration");
GFC.execute("CustomizedData");
GFC.execute("BOD");
GFC.execute("BODAttributesMDM");
GFC.execute("BODAttributesTransactional");
GFC.execute("CMD");
GFC.execute("CMDAttributes");
GFC.execute("CMDDataEntry");
GFC.execute("CMDActivate");
GFC.execute("AccountingEntity");
GFC.execute("AccountingEntityMapping");
GFC.execute("JETemplates");
GFC.execute("Scenarios");
GFC.execute("Rules");
GFC.execute("RulesScript").quit();
} else {
if (!pram.equals("Login")) {
GFC.execute("Login");
}
GFC.execute(pram).quit();
}
}
if (Boolean.parseBoolean(infor.automation.utils.Properties.get("gfc.enableemailer"))) {
sendEmail();
}
}
}
更新: 3/14/2018
答案 0 :(得分:0)
我制定了解决方法或解决方案。我发现main上的System.exit(0)
只会关闭控制台应用程序,但&#34; Java(TM)Platform SE二进制文件&#34; 将保留。为了终止这一点,我扩展到JFrame
类,以便能够覆盖ExitApp()
。在ExitApp()
我添加了一个窗口监听器,在windowClosing()
内,我再次呼叫了disposed()
和System.exit(0)
。我不知道这是如何运作的。如果有人知道这是如何工作的,请随时更新这个答案。
public class TestClass extends JFrame {
public void ExitApp() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// Dispose Java (TM) Platform SE binary.
dispose();
// Close the Java.exe I'm not sure.
System.exit(0);
}
});
}
public static void main(String[] args) {
// Close Your Application Trigger ExitApp();
System.exit(0);
}
}