我可以将我的应用程序作为独立应用程序(例如从命令行)或一种特定方式启动 - 它直接来自"源代码",即使用IntelliJ.
有没有办法检测应用程序是否从IntelliJ启动?只有这个,二元决定.
解决方法很多,在启动时添加了额外的选项,但是我正在寻找直接解决方案,对于C#这样 如何知道应用程序是由调试器启动的(VisualStudio)C#
该解决方案可以对任何IDE有效,但必须至少对IntelliJ有效.
小更新对于那些(包括我)寻求准备使用代码(Scala代码):
object ProgramInfo { val isStandaloneApp = sun.management.ManagementFactory.getRuntimeMXBean().getInputArguments.isEmpty val isDebugMode = scala.collection.JavaConversions.iterableAsScalaIterable(sun.management.ManagementFactory.getRuntimeMXBean().getInputArguments).exists(it => it.startsWith("-agentlib")) }
它不适用于复杂的情况,但是如果你没有将大量参数传递给JVM,那就没关系了.
我过去使用过以下内容来检查调试设置.你可以使用类似的东西
ManagementFactory.getRuntimeMXBean().getInputArguments()