繁体   English   中英

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

[英]In Java to indicate if code is running from IntelliJ/Eclipse etc or command line

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

我正在考虑使用 System.getProperty() 但是否有任何属性表明它?

提前致谢

尼尔

以下代码可以检测您的代码是否从IntelliJ IDEA运行。

public static boolean runningFromIntelliJ()
{
    String classPath = System.getProperty("java.class.path");
    return classPath.contains("idea_rt.jar");
}

它已在LinuxMac OS XWindows上进行了测试,因此它应该与平台无关。

没有可靠的方法可以做到这一点。 IDE本身将使用安装在系统上的JRE / JDK或随IDE一起提供的JRE / JDK。 SDK / JVM中没有任何内容专门将自身标识为在IDE中运行。

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

这仅适用于您未使用运行/调试配置中的“缩短命令行”选项之一的情况。 因为我们需要缩短命令行(类路径太长了)我现在正在使用

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

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

在带有 Eclipse 和 IntelliJ 的 Mac 上测试:

String xpcsce = System.getenv("XPC_SERVICE_NAME") );

将使用终端返回“0”,使用 Eclipse 返回“application.org.eclipse.platform.ide....”,使用 IntelliJ 返回“application.com.jetbrains.intellij.ie-EAP...”...

但 XPC 服务是 MacOS 的特定功能,因此它不适用于任何其他平台。

如果没有自定义运行参数,没有可靠的方法可以做到这一点,但是!

这比检查idea_rt.jar更可靠:

public static void main(String[] args)  {
   boolean intellij = false;
   try {
      intellij = Main.class.getClassLoader().loadClass("com.intellij.rt.execution.application.AppMainV2") != null;
   } catch (ClassNotFoundException e) {
   }
   System.out.println(intellij);
}

资料来源: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000015340/comments/360000017399

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM