2011-06-19 22 views
47

Intellij no parece estar haciendo un intercambio de código básico en mi instalación.Cómo habilitar el intercambio de código activo de Intellij

Para que este código:

public class MainTest { 
    public void method1() { 
     System.out.println("Breakpoint here"); 
    } 

    public void method2() { 
     System.out.println("Line that will get 24 modified"); 
    } 

    public static void main(String[] args) { 
     System.out.println("First print here"); 
     MainTest mainTest = new MainTest(); 
     mainTest.method1(); 
     mainTest.method2(); 
     System.out.println("Line that I do not modify"); 
    } 
} 

pongo un punto de interrupción en mainTest.method1(); a continuación, modificar la cuerda en metodo2(), pulse ctrl + s y seguir paso a paso. Lamentablemente, el tiempo de ejecución no se actualiza, se está imprimiendo una cadena antigua. Punto final - compilar - ejecutar imprime la nueva cadena. Entonces mi conclusión es que el intercambio en caliente no funciona.

¿Hay alguna configuración que deba configurarse para habilitar el intercambio de código de acceso rápido?

  • Ubuntu, JDK 1.6
  • Intellij 10,5 último (evaluación)
+0

nunca he oído hablar de intercambio en caliente para aplicaciones de línea de comandos, sólo para aplicaciones web. – duffymo

+5

Viniendo de eclipse, lo que hace esto, espero que intellij pueda hacer esto también. ¿Me estoy perdiendo de algo? –

Respuesta

58

Después de guardar su clase mientras espera en el punto de interrupción simplemente recompilar su clase con Build -> Compile 'MainTest.java' o pulse Ctrl+Shift+F9 con las asociaciones de teclas estándar.

IntelliJ IDEA mostrará un pequeño cuadro de diálogo en el que le preguntará si desea volver a cargar esa clase.

+3

Genial, gracias. ¿Puedo hacer intellij compilación automática? (una característica mucho mejor sería permitir: guardar sin compilación automática y luego tener activada la compilación por demanda). –

+0

Vea http://www.jetbrains.com/idea/webhelp/reloading-classes.html y http://www.jetbrains.com/idea/webhelp/debugger-hotswap.html – joschi

+0

Muchas gracias, busqué este ¡mucho tiempo! – Simcha

4

Hay una opción de Debugger > HotSwap en intellij 11.

+2

Hay un complemento "Eclipse Mode", que funciona exactamente como la compilación incremental de fondo de eclipse. –

+1

Un buen comentario, por desgracia, el plugin no parece mantenerse más http://plugins.intellij.net/plugin/?id=3822 –

+0

intellij 12 también;) – Thermech

2

Vaya a Configuración -> Seleccione Depurar -> HotSwap

enter image description here

+1

Incluso cuando se usa esto, todavía tengo que instruir manualmente a intelliJ para que recompile. Esto lo hace un poco más fácil porque no tiene que responder la pregunta de si desea volver a cargar las clases. –

6

Después de modificaciones a continuación y que permite intercambio en caliente, un cambio en una El archivo Java tomó 1-2 segundos del tiempo de reinicio. (El tiempo de inicio inicial es de alrededor de 7 segundos para mí).

espero abajo método ayuda ...


En primer lugar, es necesario comprobar “Hacer proyecto de forma automática” en el menú de preferencias.

Para abrir el menú de preferencias;

puede ir al menú superior y hacer clic;

IntelliJ IDEA -> Preferencias

o puede escribir a continuación acceso directo a través del teclado;

cmd,

A continuación, se puede comprobar “Hacer proyecto de forma automática”, como en la imagen de abajo;

enter image description here

En segundo lugar, resulta necesario modificar "compiler.automake.allow.when.app.running" establecer como verdadero registro.

Para abrir el registro, debe hacer clic debajo del atajo de teclado;

CMD desplazar una

Tipo "registro" como en la imagen siguiente, seleccione "Registery", y pulsa el botón del teclado ingresar;

enter image description here

Después "Registery" ventana abierta, tipo "compiler.automake" ver "compiler.automake.allow.when.app.running" opción, y comprobar que al igual que en la imagen de abajo;

enter image description here

Que, es necesario reiniciar IntelliJ para hacer cambios en el registro de trabajo.

+0

HotSwap funciona para mí cuando depuro la aplicación y luego construyo el proyecto o simplemente compilo un archivo. Sin embargo, no funciona en guardar incluso después de que se realizó la configuración de registro anterior. ¿Es porque estoy en Debug y no Run? – DKroot

0

Encontré este problema en Ubuntu. También tuve un problema aparentemente no relacionado en el que IntelliJ dio un error sobre el límite de vigilancia del archivo (mis disculpas porque ya no tengo el mensaje de error exacto). Para resolver este problema después hice los siguientes pasos:

  1. Añadir la siguiente línea al archivo o bien /etc/sysctl.conf un nuevo archivo * .conf (por ejemplo idea.conf) bajo /etc/sysctl.d/ directorio:

    fs.inotify.max_user_watches = 524288 
    
  2. Entonces ejecutar este comando para aplicar el cambio:

    sudo sysctl -p --system

Ahora mis componentes React se reconstruyen y se intercambian en caliente sin problemas.

Source

Cuestiones relacionadas