如何检测代码在eclipse IDE中运行
答案 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)在启动配置中添加环境变量:
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!!!");
}