在Java中,指示代码是从IntelliJ/Eclipse等还是从命令行运行

在Java中,指示代码是从IntelliJ/Eclipse等还是从命令行运行,java,command-line,Java,Command Line,我想知道,如果代码是通过Eclipse/IntelliJ或任何其他编辑器运行的,或者是从命令行运行的,是否有编写编程代码的选项 我想使用System.getProperty(),但是否有任何属性指示它 提前谢谢 Nir没有可靠的方法可以做到这一点。IDE本身将使用安装在您的系统上的JRE/JDK或IDE附带的JRE/JDK。SDK/JVM中没有任何东西专门标识自己是从IDE中运行的 如果您需要在程序中识别它,那么在从IDE运行代码时通过-D标志传递系统属性。此属性的存在(或不存在)可用于确定代码

我想知道,如果代码是通过Eclipse/IntelliJ或任何其他编辑器运行的,或者是从命令行运行的,是否有编写编程代码的选项

我想使用System.getProperty(),但是否有任何属性指示它

提前谢谢


Nir

没有可靠的方法可以做到这一点。IDE本身将使用安装在您的系统上的JRE/JDK或IDE附带的JRE/JDK。SDK/JVM中没有任何东西专门标识自己是从IDE中运行的


如果您需要在程序中识别它,那么在从IDE运行代码时通过-D标志传递系统属性。此属性的存在(或不存在)可用于确定代码从何处运行。

以下代码可检测代码是否从何处运行


它在
Linux
Mac OS X
Windows
上进行测试,因此它应该是独立于平台的。

这仅在您没有使用运行/调试配置中的“缩短命令行”选项时有效。由于我们需要缩短命令行(类路径太长),我现在使用

public static boolean runningFromIntelliJ()
{
    return System.getProperty("idea.test.cyclic.buffer.size") != null;
}

IntelliJ在运行测试时设置该属性。

IntelliJ:检查系统属性
java.library.path
是否包含
C:\Program Files(x86)\JetBrains\IntelliJ IDEA 12.0.1\bin
或类似内容it@vikingsteve:注意,这仅适用于
Windows
。请参阅下面我的答案,了解一个与平台无关的解决方案,如果您自己运行IDE,这非常好:)如果不是,他需要另一个解决方案。正确。不过,我看不到任何可靠的解决方案。至少没有一个不需要用户干预就能检测到环境。你看到我对这个问题的评论了吗。IntelliJ似乎在
java.library.path
中留下了提示。。。至少在v12上是这样。这是一个如何跨任何IDE工作的可靠解决方案?您不能假设库路径上存在单词“eclipse”或“intellij”意味着应用程序是从IDE启动的。RCP应用程序仍然需要EclipseEquinox库。这同样适用于扩展Netbeans框架的应用程序。Equinox还可以作为eclipse之外的OSGi容器……当然,它不能跨所有IDE工作(宇宙中有多少个IDE?),但是如果他只想识别其中的几个(例如eclipse或IntelliJ)那么,从运行时环境来看,一点检测工作可能确实表明了这一点。仍然在MacOS最新IntelliJ上工作和测试。谢谢;)
public static boolean runningFromIntelliJ()
{
    return System.getProperty("idea.test.cyclic.buffer.size") != null;
}