Tôi biết có rất nhiều câu hỏi về chủ đề này. Nhưng chúng chủ yếu là về bảo tồn trạng thái của các lớp và các biến.Tải lại các lớp trong thời gian chạy JVM
Tôi muốn làm cho ứng dụng của mình tải phiên bản mới nhất (tất cả được đóng gói trong một cái bình) và tự khởi động lại.
Ứng dụng của tôi sử dụng hàm main() giống như điểm bắt đầu, vì vậy tôi chỉ khởi tạo một lớp và toàn bộ ứng dụng bắt đầu từ đó. Điều đó khiến tôi suy nghĩ. Tôi có thể dừng toàn bộ ứng dụng trong main(). Ghi đè lên các jar cũ và sau đó JVM có thể, về mặt lý thuyết, tải lại tất cả các lớp ngoại trừ lớp chứa main() và main sẽ khởi tạo lại mọi thứ và chạy nó.
Điều này có quá phức tạp không? Tôi có nên chỉ sử dụng một lọ bootstrap mà chỉ xử lý tung ra của jar nói và tải về phiên bản mới nhất của nó.
Tập lệnh trình bao khởi động có thể là đơn giản nhất. –
Bạn có muốn thay đổi bình khi đang chạy không? và không muốn khởi động lại JVM? – Vipin
từ dự đoán của tôi, ít nhất bạn sẽ cần một) các lọ khác nhau cho lớp chính của bạn và các lớp có thể nạp lại b) chỉ sử dụng sự phản chiếu trong lớp chính của bạn c) nhiều khả năng một ClassLoader khác nhau cho jar nạp lại được – EasterBunnyBugSmasher