我正在使用 Eclipse 编写我的 Java 应用程序。
是否可以以编程方式检测代码是否从 Eclipse 调试环境 (F11) 执行或代码是否使用“java -jar”在没有 Eclipse 的情况下执行。
我知道在Visual Studio中,可以检测Visual Studio是否执行,但我这里写的不是.Net应用程序,而是Eclipse下的Java。
最佳答案
过去,我使用了一些技巧,通过检查是否可以找到 .project 文件来查看我的软件是否在 Eclipse 中运行。
public static boolean isRunningInEclipse(int folderDepth) {
File projectRoot = new File(Boot.class.getProtectionDomain().getCodeSource().getLocation().getFile());
for (int i = 0; i < folderDepth; i++) {
projectRoot = projectRoot.getParentFile();
if (projectRoot == null || !projectRoot.isDirectory()) {
return false;
}
}
return new File(projectRoot, ".project").isFile();
}
如果您的主类位于 bin
文件夹中,您可以使用folderDepth = 1 调用该方法,如果您的主类位于target/classes/
中,您可以调用该方法文件夹深度 = 2。
如果您特别想知道它是否在调试器中运行,我建议您检查 this answer
关于Java 以编程方式检测 Eclipse/调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988896/