Mój zespół programistów został ostatnio zmuszony do przeniesienia się do zdalnego środowiska programistycznego, w którym nie mamy pełnego dostępu do serwerów. Przed zmianą mieliśmy JAR, który działał dobrze na Javie 1.7 x64 razem z JRE 7. Kiedy przeszliśmy na nowy serwer, nasz JAR działał dobrze, ale potem jeden z administratorów serwera "zaktualizował" naszą Javę do starszej wersję i odinstalowałem ten, którego używaliśmy. Nie pytaj mnie dlaczego, nie wiem. Ponownie zainstalowałem Javę 1.7 i odinstalowałem 1.6 wraz ze środowiskami JRE.
Następujący problem występuje w czasie wykonywania, nie ma błędów kompilacji:
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.
Uruchomiłem ten sam plik JAR na moim laptopie bez żadnych problemów. Zarówno serwer, jak i mój laptop mają JDK 1.7 i JRE 7 w odpowiednich zmiennych% HOME% i ścieżce systemowej. Nawet ponownie zainstalowałem JRE 6 i umieściłem go później w zmiennych PATH środowiska systemowego z tym samym wynikiem.
Zmieniłem również rejestr z powrotem, aby spojrzeć na 1.6 i skutkuje to, co sprawdziłem i wydaje się, że jest to spowodowane posiadaniem wielu zainstalowanych Javas (co prowadzi do mojego pierwotnego problemu):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Byłbym wdzięczny za wszelkie spostrzeżenia, które wszyscy macie, ponieważ przeglądałem różne fora, ale nic nie wydaje się mieć dokładnie mojego problemu. Zdarzyło się to również na innym serwerze, którego używamy. Dzięki!
Aktualizacja: Nie udało się skompilować JAR do wersji 1.6 lub 1.7 i dopasować do JDK. Ponadto, dlaczego na świecie nowsza wersja Java miałaby zepsuć starszą, skompilowaną wersję?