2012-05-14 12 views
15

Mam problem z moją skompilowaną aplikacją Java na Ubuntu. Rzuca UnsupportedClassVersionError. Mam kompilacji z wyższej wersji JDK niż ten, który jest skonfigurowany na mojej drodze do uruchomienia Java:Rozwiązywanie konfliktu wersji między java i javac na Ubuntu

$ javac -version 
javac 1.7.0_147 

$ java -version 
java version "1.6.0_23" 
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2) 
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing) 

Jak mogę rozwiązać ten problem?

+2

może wolisz, aby zadać to pytanie na http://askubuntu.com/ Anyways, sprawdź co java pakiety są zainstalowane i czy jest również zainstalowany v1.7 JRE może trzeba skonfigurować jakiej wersji użyć "alternatywy" – Grims

+0

Alternatywnie spróbuj kompilować za pomocą '-target 1.6' lub' -source 1.6'. –

Odpowiedz

6

Uruchom jedną z następujących czynności, aby zlokalizować gdzie lokalizacja jest tego

javac 1.7.0_147 

wykorzystywane w następujący sposób:

whereis javac 

lub

locate javac 

lub

find javac 

Następnie po znalezieniu katalogu, symbolicznie i mocno odwołuje zawartość bin/usr/bin:

sudo ln -f -s [put location here]/bin/* /usr/bin 
+0

Mam ten sam problem, ale kiedy próbuję tego, otrzymuję nowy, inny błąd: "zbyt wiele poziomów dowiązań symbolicznych" – Paul

+1

-1, proszę, nie próbuj tej odpowiedzi. Myślę, że powinno to zostać odrzucone jako zaakceptowana odpowiedź. Najprawdopodobniej spowoduje to nieodwracalne zawrócenie maszyny przez utworzenie okrągłych dowiązań symbolicznych w katalogu/usr/bin, których nie można usunąć! – Paul

+0

@Paul Ta odpowiedź była skierowana do osoby, której 'javac' było * nie * w'/usr/bin'. Jeśli "[tutaj umieść lokalizację]/bin" okazało się być '/ usr/bin', to polecenie staje się czymś kompletnie absurdalnym, o czym powinieneś wiedzieć - gdybyś próbował zrozumieć to rozwiązanie zamiast zastosować go ślepo –

3

To jest to, co chcesz Java and Ubuntu. Zasadniczo mam tę samą konfigurację, ale przełączam się z GlassFeeda i Java7. Spójrz i spróbuj konfigurowania env Java w podobny sposób

19

Type następujące coomand w terminalu:

sudo update-alternatives --config java 

Będzie on poprosi o :

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection  Path           Priority Status 

    0   /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061  auto mode 

    1   /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061  manual mode 

    2   /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051  manual mode 


    Press enter to keep the current choice[*], or type selection number: 

wejdę 2 jak chcę użyć Java 1.7.0_21

13

Potrzebny będzie również zrobić:

sudo update-alternatives --config javac 

Wybierz żądany kompilator Javy z wyświetlonej listy. Na przykład na CentOS 5

There are 2 programs which provide 'javac'. 
Selection Command 
----------------------------------------------- 
1   /usr/lib/jvm/java-1.6.0-openjdk/bin/javac 
*+ 2  /usr/lib/jvm/java-1.7.0-openjdk/bin/javac 
+2

Dzięki ...-- config ** javac ** działał tutaj. – CoDe

+0

pracował dla mnie .. Dzięki –