Intellij 핫 코드 스왑을 활성화하는 방법


80

Intellij가 내 설치에서 기본 핫 코드 스왑을 수행하지 않는 것 같습니다.

이 코드의 경우 :

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");
    }
}

중단 점을 설정 mainTest.method1();한 다음 method2 ()에서 문자열을 수정하고 ctrl + s를 누르고 단계별로 계속합니다. 불행히도 런타임이 업데이트되지 않고 이전 문자열이 인쇄됩니다. Full stop-compile-run은 새 문자열을 인쇄합니다. 그래서 내 결론은 핫스왑이 작동하지 않는다는 것입니다.

핫 코드 스왑을 활성화하기 위해 설정해야하는 설정이 있습니까?

  • Ubuntu, JDK 1.6
  • Intellij 10.5 Ultimate (평가)

명령 줄 앱에 대한 핫스왑에 대해 들어 본 적이없고 웹 앱에만 해당됩니다.
duffymo 2011-06-19

11
이클립스에서 온 것인데, 나는 intellij가 이것을 할 수 있다고 기대할 것입니다. 내가 뭔가를 놓치고 있습니까?
Maxim Veksler 2011-06-19

나는 또한이 함께 문제를 많이 직면 한 후, 난 당신이 VM 사용하는 경우 알고 있어요 - 다음 핫 스왑하지 않습니다 작업
인 Ashish Shetkar

답변:


103

중단 점에서 대기하는 동안 클래스를 저장 한 후 클래스를 다시 컴파일 Build -> Compile 'MainTest.java'하거나 Ctrl+Shift+F9표준 키 바인딩으로 누르십시오 .

IntelliJ IDEA는 해당 클래스를 다시로드 할 것인지 묻는 작은 대화 상자를 표시합니다.


6
감사합니다. 인텔 리즈 자동 컴파일을 할 수 있습니까? (훨씬 더 나은 기능은 다음을 허용하는 것입니다 : 자동 컴파일없이 저장 한 다음 기본적으로 요청시 컴파일을 사용하도록 설정).
맥심 Veksler


고마워요, 많이 찾았어요!
Simcha

핫 스왑 전에 디버그하는 동안 많은 컴파일 오류. 패키지를 찾을 수 없습니다.
Sunnyday

@Sunnyday IntelliJ IDEA 2019.1에서 수정되었습니다. youtrack.jetbrains.com/issue/IDEA-163187
joschi

26

아래에서 수정하고 핫 스왑을 활성화 한 후 Java 파일을 변경하면 다시 시작하는 데 1-2 초가 걸렸습니다. (초기 시작 시간은 약 7 초입니다.)

아래 방법이 도움이 되었기를 바랍니다.


먼저 환경 설정 메뉴에서“자동으로 프로젝트 만들기”를 체크해야합니다.

기본 설정 메뉴를 열려면

상단 메뉴로 이동하여 클릭 할 수 있습니다.

IntelliJ IDEA-> 기본 설정

또는 키보드를 통해 바로 가기 아래에 입력 할 수 있습니다.

cmd + 옵션 + s

그러면 Make project automatically아래 그림과 같이 확인할 수 있습니다 .

여기에 이미지 설명 입력

둘째, compiler.automake.allow.when.app.running레지스트리 설정을 true 로 수정해야 합니다.

레지스트리를 열려면 아래 바로 가기 키를 클릭해야합니다.

cmd + 시프트 + a

입력 registry선택 아래 그림과 같이 Registry, 키보드의 버튼을 Enter 키를 누르십시오;

여기에 이미지 설명 입력

Registry창이 열립니다 입력 compiler.automake확인 compiler.automake.allow.when.app.running옵션을, 그리고 아래 그림과 같이 그것을 확인;

여기에 이미지 설명 입력

그런 다음 IntelliJ를 다시 시작하여 레지스트리를 변경해야합니다.


2
HotSwap은 응용 프로그램을 디버그 한 다음 프로젝트를 빌드하거나 파일을 컴파일 할 때 저에게 효과적입니다. 그러나 위의 레지스트리 설정이 완료된 후에도 저장시 작동하지 않습니다. 내가 디버그 상태이고 실행되지 않았기 때문입니까?
DKroot

2
@DKroot, 예-IntelliJ에서 핫스왑이 작동하려면 디버그 모드에 있어야합니다.
J Woodchuck


4

설정으로 이동-> 디버그 선택-> HotSwap

여기에 이미지 설명 입력


1
이것을 사용할 때에도 여전히 intelliJ에게 재 컴파일하도록 수동으로 지시해야합니다. 이렇게하면 클래스를 다시로드할지 여부에 대한 질문에 답할 필요가 없기 때문에 조금 더 쉬워집니다.
Henno Vermeulen 2016 년

3

Java 파일을 저장할 때마다 핫스왑이 자동으로 실행되기를 원했습니다. 다른 답변 중 어느 것도 이것을하지 않았으므로 다음과 같습니다.

  1. 저장시 실행할 매크로 생성 : https://stackoverflow.com/a/5581992/14731
  2. Action: Hotswap매크로 끝에 추가됨 ( Run -> Reload Changed Classes)


0

우분투에서이 문제가 발생했습니다. 또한 IntelliJ가 파일 감시 제한에 대한 오류를 제공하는 명백히 관련없는 문제가있었습니다 (더 이상 정확한 오류 메시지가 없다는 점에 대해 사과드립니다). 이 문제를 해결하기 위해 다음 단계를 수행했습니다.

  1. 다음 줄을 /etc/sysctl.conf파일 또는 디렉토리 idea.conf아래 의 새 * .conf 파일 (예 :)에 추가합니다 /etc/sysctl.d/.

    fs.inotify.max_user_watches = 524288
    
  2. 그런 다음이 명령을 실행하여 변경 사항을 적용합니다.

    sudo sysctl -p-시스템

이제 내 React 구성 요소가 다시 빌드되고 핫 스왑됩니다.

출처


비슷한 문제가 있습니다. 그러나 이것은 (파일 감시자 증가) 나에게 도움이되지 않았습니다.
Rejeev Divakaran

0

당신이 이것에 대해 물어 보는 것 같아요

  1. Java 클래스를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 파일 컴파일 및 다시로드 선택
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.