Java 以编程方式检测 Eclipse/调试器

标签 java eclipse debugging

我正在使用 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/

相关文章:

java.net.SocketException : Network is unreachable (Eclipse on Windows 8)

java - 如何在 Eclipse 中为新的 Maven 项目设置默认 JDK?

javascript - 如何调试在 Razor View 中定义的模态对话的 document.ready Javascript?

java - javac 会生成静态桥接方法吗?

java - 从 Int 文本文件创建多项式。

c - 为什么 gdb 将 sqrt(3) 评估为 0?

php - 如何在 PHP 中获取有用的错误消息?

debugging - VS2010 调试入口很慢

java - mapreduce 复合键示例 - 未显示所需的输出

java - 为什么我从 JComboBox 得到非常不同的行为,这取决于平台 (Windows/Linux) 和语言 (Java/Jython)