コードがEclipse/IntelliJまたは他のエディターを介して実行されている場合、またはコマンドラインから実行されている場合に、プログラマティックを作成するオプションがあるかどうかを知りたいです。
System.getProperty()を使用することを考えていましたが、それを示すプロパティはありますか?
前もって感謝します
ニル
コードが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は、テストの実行時にそのプロパティを設定します。