如何检测代码在eclipse IDE中运行

时间:2010-03-18 07:06:26

标签: java ide

如何检测代码在eclipse IDE中运行

10 个答案:

答案 0 :(得分:21)

我不知道获取此类信息的通用方法。

一个建议:

当您在Tomcat中启动Java程序(或Web服务器)时,只需添加一个参数,指示该程序是由Eclipse启动的。

您可以打开“打开运行对话框”(“运行”菜单),然后选择您的应用程序类型,并在“参数”选项卡中添加-DrunInEclipse=true

在Java代码中,您可以检查属性的值:

String inEclipseStr = System.getProperty("runInEclipse");
boolean inEclipse = "true".equalsIgnoreCase(inEclipseStr);

这样,如果程序没有在Eclipse中运行(或者不幸的是,如果你忘了设置属性),属性将是null,然后布尔inEclipse将等于false。 / p>

答案 1 :(得分:6)

1)创建一个辅助方法,如:

public boolean isDevelopmentEnvironment() {
    boolean isEclipse = true;
    if (System.getenv("eclipse42") == null) {
        isEclipse = false;
    }
    return isEclipse;
}

2)在启动配置中添加环境变量:

enter image description here

enter image description here

3)用法示例:

if (isDevelopmentEnvironment()) {
    // Do bla_yada_bla because the IDE launched this app
}

答案 2 :(得分:3)

以下情况应该有效。

虽然我同意将代码检测到单个IDE作为开发环境并不是最佳解决方案。在运行时使用标志更好。

public static boolean isEclipse() {
    boolean isEclipse = System.getProperty("java.class.path").toLowerCase().contains("eclipse");
    return isEclipse;
}

答案 3 :(得分:2)

实际上代码不是在Eclipse中运行,而是在Eclipse启动的单独Java进程中运行,并且默认情况下Eclipse没有做任何事情使它与程序的任何其他调用有任何不同。

如果你的程序是在调试器下运行的,你想知道的吗?如果是这样,你不能肯定地说。但是,您可以检查用于调用程序的参数,看看是否有任何您不喜欢的内容。

答案 4 :(得分:2)

如果您的工作区与某些模式匹配,例如“/ home / user / workspace / Project”,您可以使用以下代码:

Boolean desenv = null;

boolean isDevelopment() {
    if (desenv != null) return desenv;

    try {
        desenv = new File(".").getCanonicalPath().contains("workspace");
    }
    catch (IOException e) {
        e.printStackTrace();
    }

    return desenv;
}

答案 5 :(得分:2)

可以在任何IDE上使用的更通用和精确的方法是循环:

ManagementFactory.getRuntimeMXBean().getInputArguments()

寻找“-Xdebug”|| (以)开头“-agentlib:jdwp =”。

我来自@saugata评论here

如果您想抛出一个条件异常,阻止应用程序退出,这是非常好的。使用像“ideWait”这样的布尔值,并将它作为ideWait = false添加到Eclipse监视表达式中,所以无论何时停止该抛出,并“逐帧”,您都可以继续快速调试(我的意思是!)

答案 6 :(得分:1)

我认为没有办法做到这一点。但我建议只是一个命令行参数,如'debug'。然后在你的主要方法中做

if (args.length > 0 && args[0].equalsIgnoreCase("debug")) {
  // do whatever extra work you require here or set a flag for the rest of the code
}

通过这种方式,您可以随时通过指定调试参数来获取额外的代码,但在正常情况下它将永远不会执行。

答案 7 :(得分:0)

如果您的备用执行工作流提供了一组不同的依赖项,那么这可能会有效:

library(XML)
library(httr)
library(foreach)

url        <- "http://www.sciences-po.asso.fr/gene/main.php?base=1244"    
response   <- GET(url)
doc        <- content(response, type="text/html", encoding = 'ISO-8859-1')
parseddoc  <- htmlParse(doc)

# i have to modify the content of this 
xpathApply(parseddoc, "//*[@id='PersonneNom']/@value")
# then make sure it is sent to the server, retrieve the code sent back, etcaetera...

答案 8 :(得分:0)

根据Can you tell on runtime if you're running java from within a jar?

,您可以检测自己是否在JAR内部

Eclipse将从classes/目录运行您的应用程序,而大多数最终用户将从JAR运行该应用程序。

答案 9 :(得分:-2)

您可以尝试这样的事情:

if (ClassLoader.getSystemResource("org/eclipse/jdt/core/BindingKey.class")!=null){ 
    System.out.println("Running within Eclipse!!!"); 
} else {
    System.out.println("Running outside Eclipse!!!");
}