[英]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");
}
它已在Linux
, Mac OS X
和Windows
上進行了測試,因此它應該與平台無關。
沒有可靠的方法可以做到這一點。 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.