Nhóm phát triển của tôi gần đây đã buộc phải chuyển sang môi trường phát triển từ xa nơi chúng tôi không có toàn quyền truy cập vào các máy chủ. Trước khi thay đổi, chúng tôi có một JAR đang chạy tốt trên Java 1.7 x64 cùng với JRE 7. Khi chúng tôi chuyển sang máy chủ mới, JAR của chúng tôi đang chạy ổn, nhưng sau đó một trong những quản trị viên máy chủ đã "cập nhật" Java của chúng tôi lên phiên bản cũ hơn và gỡ cài đặt phiên bản chúng tôi đang sử dụng. Đừng hỏi tôi tại sao, tôi không biết. Tôi đã cài đặt lại Java 1.7 và gỡ cài đặt 1.6 cùng với JRE.
Sự cố sau xảy ra trong thời gian chạy, không có lỗi xây dựng:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Tôi đã chạy cùng một JAR trên máy tính xách tay của mình mà không có vấn đề gì. Cả máy chủ và máy tính xách tay của tôi đều có JDK 1.7 và JRE 7 trong các biến% HOME% tương ứng và PATH hệ thống. Tôi thậm chí đã cài đặt lại JRE 6 và đặt nó sau đó trong các biến PATH của môi trường hệ thống với cùng kết quả.
Tôi cũng đã thay đổi sổ đăng ký trở lại giao diện 1.6 và nó dẫn đến kết quả như sau, tôi đã tra cứu và có vẻ như đã được cài đặt nhiều Jav (dẫn đến sự cố ban đầu của tôi):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Tôi sẽ đánh giá cao bất kỳ thông tin chi tiết nào mà tất cả các bạn có được khi tôi đã xem qua các diễn đàn khác nhau nhưng dường như không có gì chính xác là vấn đề của tôi. Ngoài ra, điều này cũng xảy ra trên một máy chủ khác mà chúng tôi đang sử dụng. Cảm ơn!
Cập nhật: Không may mắn với việc biên dịch lại JAR thành 1.6 hoặc 1.7 và khớp với JDK. Ngoài ra, tại sao trên thế giới, một phiên bản Java mới hơn lại phá vỡ một phiên bản biên dịch cũ hơn?