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

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

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

一个建议:

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

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

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

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

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

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

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

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

在此处输入图像描述

在此处输入图像描述

3)用法示例:

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

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

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

如果您的工作区与“/ 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; } 

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

ManagementFactory.getRuntimeMXBean().getInputArguments()

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

我来自@saugata的评论。

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

以下应该有效。

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

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

我认为没有办法做到这一点。 但我建议只是一个命令行参数,如’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 } 

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

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

 boolean isRunningInEclipe = false; try { Workbench.getInstance(); isRunningInEclipe = true; } catch (NoClassDefFoundError error) { //not running in Eclipse that would provide the Workbench class } 

你可以检测你是否在JAR中, 你可以在运行时告诉你是否在jar中运行java?

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

你可以尝试这样的事情:

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