이 주제에 관해 많은 의문 사항이 있습니다. 그러나 그들은 주로 클래스와 변수의 상태를 보존하는 데 있습니다.JVM 런타임 중에 클래스를 다시로드하십시오.
내 응용 프로그램을 최신 버전 (모든 단일 항아리에 패키지 됨)으로 만들고 자체를 다시 시작하고 싶습니다.
내 응용 프로그램은 main() 함수를 시작점으로 사용하므로 하나의 클래스 만 초기화하면 전체 응용 프로그램이 거기에서 시작됩니다. 그래서 그 생각이 들었어. main()에서 전체 응용 프로그램을 중지 할 수 있습니다. 이전 jar를 덮어 쓰면 JVM은 이론적으로 main()을 포함하는 클래스를 제외하고 모든 클래스를 다시로드 할 수 있고 main은 모든 것을 다시 초기화하고 실행합니다.
너무 많은 번거 로움이 있습니까? 난 그냥 항아리의 출시를 처리하고 최신 버전을 다운로드 부트 스트랩 항아리를 사용해야합니다.
부트 스트랩 쉘 스크립트가 가장 단순합니다. –
런타임시 Jar를 변경 하시겠습니까? JVM을 다시 시작 하시겠습니까? – Vipin
내 추측으로는 적어도 메인 클래스와 재로드 가능한 클래스에 대해 다른 항아리가 필요합니다. b) 기본 클래스에서만 리플렉션을 사용합니다. c) 재로드 가능한 항아리에 대해 다른 ClassLoader를 사용할 가능성이 큽니다. – EasterBunnyBugSmasher