Chỉ vài ngày trước, tôi đã gặp câu hỏi tương tự như của bạn. Tất cả các mã chạy tốt trên máy cục bộ của tôi, nhưng hóa ra lỗi (noclassdeffound & khởi tạo). Vì vậy, tôi đăng giải pháp của mình, nhưng tôi không biết tại sao, tôi chỉ đưa ra một khả năng. Tôi hy vọng ai đó biết sẽ giải thích điều này. @ John Vint Trước tiên, tôi sẽ chỉ cho bạn vấn đề của tôi. Mã của tôi có biến tĩnh và khối tĩnh cả. Khi tôi gặp vấn đề này lần đầu tiên, tôi đã thử giải pháp của John Vint và cố gắng bắt ngoại lệ. Tuy nhiên, tôi không bắt được gì. Vì vậy, tôi nghĩ rằng đó là vì biến tĩnh (nhưng bây giờ tôi biết chúng là cùng một thứ) và vẫn không tìm thấy gì. Vì vậy, tôi cố gắng tìm sự khác biệt giữa máy linux và máy tính của tôi. Sau đó, tôi thấy rằng vấn đề này chỉ xảy ra khi một số luồng chạy trong một tiến trình (Nhân tiện, máy linux có lõi kép và tiến trình kép). Điều đó có nghĩa là nếu có hai tác vụ (cả hai đều sử dụng mã có khối tĩnh hoặc biến) chạy trong cùng một quy trình thì sẽ bị lỗi, nhưng nếu chúng chạy trong các quy trình khác nhau thì cả hai đều ổn. Trong máy Linux, tôi sử dụng
mvn -U clean test -Dtest=path
để chạy một tác vụ và bởi vì biến tĩnh của tôi là khởi động một thùng chứa (hoặc có thể bạn khởi tạo một trình nạp lớp mới), vì vậy nó sẽ duy trì cho đến khi jvm dừng và jvm chỉ dừng khi tất cả các tác vụ trong một tiến trình dừng lại. Mỗi tác vụ sẽ bắt đầu một container mới (hoặc trình nạp lớp) và nó làm cho jvm bối rối. Hậu quả là lỗi xảy ra. Vậy, làm thế nào để giải quyết nó? Giải pháp của tôi là thêm một lệnh mới vào lệnh maven và làm cho mọi tác vụ đi đến cùng một thùng chứa.
-Dxxx.version=xxxxx #sorry can't post more
Có thể bạn đã giải quyết vấn đề này, nhưng vẫn hy vọng nó sẽ giúp những người khác gặp vấn đề tương tự.