我正在使用swing编写应用程序。我需要通过单击JButton退出应用程序,我可以使用System.exit()还是应该使用其他一些方法,这是最佳做法。如果调用System.exit()不是最佳做法,请说明原因并说明退出应用程序的替代方法。 最佳答案 一般来说,调用System.exit(...)除了应用程序的“main”方法之外的任何地方都可能有问题,原因(至少)如下。这是重用代码的障碍。这让单元测试变得困难。例如,如果您的代码在您的JUnit测试执行一些错误处理时调用System.exit,那么您的测试序列就结束了!在“退出”按
我有一个java应用程序,它被永久拉取。执行如下:nohupant>log.txt&问题是无限期地持续下去,应用程序退出并收到消息“退出143”。 最佳答案 退出码143对应SIGTERM,这是运行时默认发送的信号kill.是否有可能是另一个进程或用户正在终止该应用程序?没有更多信息,很难提出任何其他建议。 关于java-始终以"Exit143"Ubuntu结尾的应用程序Java,我们在StackOverflow上找到一个类似的问题: https://stac
我在Java中有一个相当复杂的关闭-有很多清理工作要做。特别是我试图弄清楚如何从关闭Hook线程处理错误。我的代码目前包括这个:try{returnshutdownPromise=doShutdown();}catch(Throwableexc){logger.error("Anexceptionwasthrownwhileshuttingdowntheapplication.",exc);System.exit(1);returnnull;}当我最初写这篇文章时,我基本上认为,关机错误应该直接进入exit。但是exit并不是那么低级;它调用关闭Hook。所以我想-从关闭Hook调用e
我正在为现有的JavaSwing应用程序实现一些测试,以便我可以安全地重构和扩展代码而不会破坏任何东西。我从JUnit中的一些单元测试开始,因为这似乎是最简单的入门方法,但现在我的首要任务是创建一些端到端测试来测试整个应用程序。我在每个测试中重新启动应用程序,方法是将每个测试方法放在一个单独的测试用例中,并在Ant的junit任务中使用fork="yes"选项.但是,我想作为测试实现的一些用例涉及用户退出应用程序,这导致调用System.exit(0)的方法之一。这被JUnit视为错误:junit.framework.AssertionFailedError:ForkedJavaVM异
我担任Java和VB.Net程序员大约4年,担任C#程序员大约6个月。我还使用了很多动态语言,例如Perl、Python、PHP和JavaScript。我从来不需要预处理器。我的问题是:为什么您看到预处理器在C、C++和Objective-C中如此广泛使用,但很少(或从未)在Java、C#或Scala等语言中看到它? 最佳答案 我不了解Objective-C,所以我的回答是关于对比C和C++中预处理器的使用。出于几个原因,预处理器最初对于C是必需的。如果我没记错的话,本来C是没有常量的,所以需要#define来避免魔数(MagicN
Java3D启动了几个系统线程并且没有在它们上设置isDaemon标志。当我处置我的应用程序的(唯一的)JFrame时,它不会终止,因为这些线程仍在运行。调用System.exit()似乎是终止应用程序的唯一方法。(或者当然是从外部杀死它)。因为我不喜欢调用System.exit()我尝试了以下方法(但没有成功):在VirtualUniverse上调用removeAllLocales():这会终止大部分线程,但仍然有一个(名为J3D-Renderer-1)剩余。使用反射获取对javax.media.j3d.MasterControl中的字段ThreadGrouprootThread
我已经设法在命令提示符下运行我的jar文件,但它总是给我一个响应Couldnotfindthemainclass:XX.Programwillexit.请帮帮我,谢谢。 最佳答案 参见SettinganApplication'sEntryPointIfyouhaveanapplicationbundledinaJARfile,youneedsomewaytoindicatewhichclasswithintheJARfileisyourapplication'sentrypoint.Youprovidethisinformation
自从装了AndroidStudio3.2,一直跑不了Java,试过jdk-8u181-windows-x64,jdk-10.0.2_windows-x64_bin,jdk-11_windows-x64_bin,设置PATH并重新安装所有东西无数次,结果都是一样的——没有出现“java”,错误信息是:-Gradlesyncfailed:CouldnotrunJVMfromtheselectedJDK.PleaseensureJDKinstallationisvalidandcompatiblewiththecurrentOS(Windows8.16.3,amd64).Ifyouareus
这段代码会死锁:publicclassMain{staticpublicfinalObjecta=newObject();static{Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){if(a==null);}});System.exit(0);}staticpublicvoidmain(finalString[]args){}}此代码将正常退出:publicclassMain{staticpublicfinalObjecta=newObject();static{finalObject
我正在尝试运行SQuirreLSQL。我已经下载并安装了它,但是当我尝试运行它时,我收到以下错误消息:JavaVirtualMachineLauncher.Couldnotfindthemainclass.Programwillexit.我明白了这个问题的要点,但我不知道如何解决它。有什么帮助吗?更多信息:我使用的是WindowsXP专业版。我安装了java1.6,其他应用程序运行正常。安装运行正常。我相信我已经正确地按照安装说明进行操作。为了运行它,我调用了squirrel-sql.bat文件。更新本题:"Couldnotfindthemainclass:XX.Programwill