Geliştirme ekibim kısa süre önce, sunuculara tam erişimimiz olmayan bir uzaktan geliştirme ortamına zorlandı. Değişiklikten önce JRE 7 ile birlikte Java 1.7 x64 üzerinde sorunsuz çalışan bir JAR'ımız vardı. Yeni sunucuya geçtiğimizde JAR'ımız sorunsuz çalışıyordu, ancak sunucu yöneticilerimizden biri Java'mızı daha eski bir sürümle "güncelledi" sürümünü ve kullandığımız sürümü kaldırdı. Bana nedenini sorma, bilmiyorum. Java 1.7'yi yeniden yükledim ve 1.6'yı JRE'lerle birlikte kaldırdım.
Aşağıdaki sorun çalışma zamanında ortaya çıkar, derleme hatası yoktur:
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.
Dizüstü bilgisayarımda aynı JAR'ı sorunsuz bir şekilde çalıştırıyorum. Hem sunucu hem de dizüstü bilgisayarım, ilgili% HOME% değişkenlerinde ve sistem PATH'ında JDK 1.7 ve JRE 7'ye sahip. Hatta JRE 6'yı yeniden yükledim ve daha sonra aynı sonuca sahip sistem ortamı PATH değişkenlerine yerleştirdim.
Ayrıca, 1.6'ya bakmak için kayıt defterini geri değiştirdim ve aşağıdakilerle sonuçlandı;
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Çeşitli forumlara baktığım için sahip olduğunuz her türlü görüşe minnettar olurum, ancak hiçbir şey tam olarak benim sorunuma sahip görünmüyor. Ayrıca bu, kullandığımız başka bir sunucuda da oldu. Teşekkürler!
Güncelleme: JAR'ı 1.6 veya 1.7'ye yeniden derlemede ve JDK ile eşleştirmede şans yok. Ayrıca, neden dünyada Java'nın daha yeni bir sürümü eski bir derlenmiş sürümü bozsun?