簡體   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