2014-07-25 2 views
5

저는 Java로 프로그래밍을 해왔으며, Netbeans 및 다른 IDE에서이 기능을 사용하여 디버깅 중에 프로그램을 다시 시작할 필요없이 변경할 수 있습니다. Java를 다시 시작하지 않고 즉시 업데이트 할 수 있다면 Java로 응용 프로그램을 작성하고 있습니다. 업데이트 할 때 실행할 수있는 두 번째 항아리가 있어야한다는 생각이 들었습니다. IDE가하는 것과 똑같은 일을 할 수는 있었지만, 코드를 어떻게 바꿀 수 있는지 전혀 모르겠습니다. 누구나 나를 계몽시킬 수 있습니까? 고맙습니다!핫 코드 교환 작동 방법

+0

[이] (http://stackoverflow.com/questions/7989135/is : 나는 더 복잡한 hotpush의 경우 몇 뒤에 흐름을 이해하는데이 문서가 꽤 도움이되었다고합니다 - 가능한 - 프로그래밍 방식으로 컴파일 - java-source-code-in-memory-only). 받아 들여진 응답의 어느 쪽이든이 아마도 당신의 필요에 부합 할 것입니다. – ChiefTwoPencils

+1

JDWP, 특히 [JDI] (http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html#jdi)를 살펴보십시오. –

답변

3

디버깅이 JDI (Java 디버그 인터페이스)를 사용하는 경우 Eclipse와 같은 IDE. Java API의 모음으로 외부 Java 가상 머신을 만들고 연결할 수 있습니다. 이는 가상 시스템에서 클래스를 재정의하는 데 사용할 수있는 Java Agent와 함께 사용할 수 있습니다. 디버그 모드에서 Eclipse가 수행하는 작업은 코드가 실행되는 새로운 가상 머신을 만드는 것입니다. 편집하고 다시 컴파일 할 때; eclipse는 새로운 바이트 코드를 전송하여 변경된 클래스를 다시 정의하도록 JVM에 지시합니다.

JDI documentation을 읽고 특히 클래스 변환기를 구성하는 데 사용되는 Java instrument class을 살펴볼 수 있습니다. setting up a JDI launcher (새 JVM 시작)에 대한 관련 질문이 있습니다.