Cómo detectar que el código se ejecuta dentro del IDE Eclipsecómo detectar que el código se ejecuta dentro del IDE Eclipse
Respuesta
No estoy al tanto de una manera genérica para obtener este tipo de información.
Una sugerencia:
Cuando se inicia un programa Java (o un servidor web) en el interior de Tomcat, basta con añadir un argumento que indique que este programa se puso en marcha por Eclipse.
Puede hacerlo abriendo el "Diálogo Abrir ejecución" (menú "Ejecutar"), luego seleccione su tipo de aplicación y agregue en la pestaña "Argumentos" un -DrunInEclipse=true
.
En su código Java, se puede comprobar el valor de la propiedad:
String inEclipseStr = System.getProperty("runInEclipse");
boolean inEclipse = "true".equalsIgnoreCase(inEclipseStr);
De esta manera, si el programa no se ejecuta dentro de Eclipse (o por desgracia si se olvidó de establecer la propiedad) la propiedad ser null
y luego el booleano inEclipse
será igual a falso.
+1 para configurar una opción de tiempo de ejecución explícita. – Thilo
en realidad estoy buscando una forma genérica. –
No creo que haya ninguna manera de hacer esto. Pero lo que sugeriría es solo un argumento de línea de comando como 'depurar'. Luego, en su principal método simplemente hacer
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
}
esta manera también se puede obtener su código extra para funcionar siempre que lo desee con sólo especificando el parámetro de depuración, pero en condiciones normales nunca va a ejecutar.
En realidad, el código no se ejecuta dentro de Eclipse, sino en un proceso separado de Java iniciado por Eclipse, y Eclipse no hace nada predeterminado para que sea diferente de cualquier otra invocación de su programa.
¿Es lo que desea saber si su programa se ejecuta bajo un depurador? Si es así, no puedes decirlo con certeza. Sin embargo, usted PUEDE inspeccionar los argumentos utilizados para invocar su programa y ver si hay algo allí que no le gusta.
Si se ejecuta con depurador, habrá un argumento similar a -agentlib: jdwp = transport = dt_socket, suspend = y, address = localhost: 2124, que se puede obtener de ManagementFactory.getRuntimeMXBean(). GetInputArguments(). Get (
@saugata - con Oracle JVM i –
@ ThorbjørnRavnAndersen ... como no poder citar adecuadamente los argumentos que no queremos interpolar, por ejemplo''* .txt.gz''? –
Usted puede intentar algo como esto:
if (ClassLoader.getSystemResource("org/eclipse/jdt/core/BindingKey.class")!=null){
System.out.println("Running within Eclipse!!!");
} else {
System.out.println("Running outside Eclipse!!!");
}
No. Me estoy ejecutando dentro de Eclipse pero el código muestra lo contrario ... – BullyWiiPlaza
1) Crear un método de ayuda como:
public boolean isDevelopmentEnvironment() {
boolean isEclipse = true;
if (System.getenv("eclipse42") == null) {
isEclipse = false;
}
return isEclipse;
}
2) Añadir una variable de entorno a su configuración de lanzamiento:
3) Ejemplo de uso:
if (isDevelopmentEnvironment()) {
// Do bla_yada_bla because the IDE launched this app
}
Si el espacio de trabajo coincide con algún patrón como "/ home/usuario/espacio de trabajo/Proyecto" que puede usar el código de abajo:
Boolean desenv = null;
boolean isDevelopment() {
if (desenv != null) return desenv;
try {
desenv = new File(".").getCanonicalPath().contains("workspace");
}
catch (IOException e) {
e.printStackTrace();
}
return desenv;
}
A más genérico y de manera precisa, que puede ser utilizado en cualquier IDE sería bucle en:
ManagementFactory.getRuntimeMXBean().getInputArguments()
buscando "-Xdebug" || (comenzando con) "-agentlib: jdwp =".
Vine con esto de @saugata comment here.
Esto es excelente si desea lanzar una excepción condicional que impida que la aplicación simplemente salga. Use un booleano como "ideWait" y agréguelo a las expresiones de reloj de Eclipse como ideWait = false, así que cuando se detiene en ese tiro, y "drop to frame" puede continuar depurando felizmente (¡lo digo en serio!)
Esto podría funcionará si su flujo de trabajo de ejecución alternativa proporciona un conjunto diferente de dependencias:
boolean isRunningInEclipe = false;
try {
Workbench.getInstance();
isRunningInEclipe = true;
} catch (NoClassDefFoundError error) {
//not running in Eclipse that would provide the Workbench class
}
se puede detectar si está dentro de un frasco o no, según Can you tell on runtime if you're running java from within a jar?
Eclipse se ejecutará la aplicación de la classes/
dir , mientras que la mayoría de sus usuarios finales ejecutarán la aplicación desde un JAR.
Lo siguiente debería funcionar.
Aunque estoy de acuerdo con que el código que detecta un IDE único como dev env no es una solución óptima. Usar una bandera en tiempo de ejecución es mejor.
public static boolean isEclipse() {
boolean isEclipse = System.getProperty("java.class.path").toLowerCase().contains("eclipse");
return isEclipse;
}
- 1. ¿Cómo detectar que el código de C# Windows Forms se ejecuta dentro de Visual Studio?
- 2. información del código ide
- 3. Cómo hacer que el eclipse IDE se construya más rápido
- 4. Manteniendo el código colapsado - Eclipse IDE
- 5. Expandiendo el código contraído en Eclipse IDE
- 6. El depurador de Eclipse ejecuta la versión incorrecta del código
- 7. Java Cómo embellecer el código de Java dentro de Eclipse IDE
- 8. ¿Cómo detectar que el código de Python se está ejecutando a través del depurador?
- 9. Eclipse IDE Scope Highlighting?
- 10. ¿Cómo detectar la actividad del usuario con un servicio Java que se ejecuta en Windows?
- 11. ¿En qué contexto se ejecuta el código del programador?
- 12. ¿Cómo hacer que Eclipse formatee correctamente el código JSP?
- 13. ¿Hay alguna forma de copiar el código del Eclipse IDE sin el formato de texto enriquecido?
- 14. Cómo se puede alinear el código en base Eclipse Force.com IDE
- 15. cómo agregar parámetros de línea de comandos cuando se ejecuta el código de Java en Eclipse?
- 16. ¿Cómo encontrar el uso de anotaciones usando Eclipse IDE?
- 17. ¿Se ejecuta el código C más rápido?
- 18. ¿Cómo se desactiva jsessionid para Jetty que se ejecuta con el plugin Eclipse Jetty Maven?
- 19. ¿Cómo se puede depurar el código Arduino que se ejecuta en el hardware Arduino?
- 20. ¿Cómo puede encontrar mi código si se ejecuta dentro de IIS?
- 21. ¿Cómo me conecto a una aplicación que se ejecuta dentro del emulador de Windows Phone?
- 22. ¿Cómo sé que mi código se está ejecutando en modo "depuración" en IDE?
- 23. ¿Cómo enviar eventos desde el HTML que se ejecuta dentro de un UIWebView al código nativo Objective-C?
- 24. Detectar dentro del navegador Android o WebView
- 25. IDE de Eclipse no se inicia
- 26. ¿Cómo se usa Eclipse como IDE de Javascript?
- 27. ¿Cómo detectar esa aplicación azul que se ejecuta en el tejido de desarrollo?
- 28. cómo incrementar el valor del campo cada vez que se ejecuta la prueba de selenio?
- 29. Safari 4: cómo crear un perfil del código que se ejecuta cuando la página carga
- 30. Dónde exactamente se ejecuta el código nativo NDK
Tienes que elaborar más. ¿Cuál es el contexto? ¿Qué estás intentando lograr? –
Quiero ejecutar algún código adicional en caso de que se ejecute dentro de Eclipse IDE –
¿Qué código adicional? –