update-java-alternatives vs update-alternatives --config java

96

Na Ubuntu 12.04 LTS zainstalowałem JDK7, Eclipse i Arduino IDE firmy Sun. Chcę, aby Arduino używało OpenJDK 6, a Eclipse używa JDK 7 Sun.

Z mojego zrozumienia muszę ręcznie wybrać język Java, który ma być używany przed uruchomieniem każdej aplikacji. Doprowadziło mnie to do update-java-alternatives -lpolecenia. Po uruchomieniu tego widzę tylko:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

ale po uruchomieniu update-alternatives --config javawidzę następujące informacje:

*0  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   auto mode
1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode
2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode
3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

Nie rozumiem, dlaczego update-java-alternativesnie wyświetla tych samych 3 opcji. Nie rozumiem też, jak przełączać się między OpenJDK6 i JDK7. Jak mogę korzystać z programowania OpenJDK6 dla programistów Arduino i Sun JDK7 dla programistów Eclipse / Android?

Stan Smith
źródło

Odpowiedzi:

126

sudo update-alternatives --config java

Konfiguruje wartość domyślną dla programu „java”. To jest VM VM.

sudo update-alternatives --config javac

Konfiguruje domyślny kompilator Java.

Możesz to również zobaczyć, ponieważ pierwsze polecenie wyświetla wiele folderów „JRE” (Java Runtime Environment), a Program nazywa się po prostu „java”.

Jeśli sprawdzę, która wersja jest używana, wydając polecenie java -version lub javac -versionwidzę, że każde polecenie zmienia używany program.

Jednak używanie update-java-alternativesz wersją JDK zmienia dla mnie oba programy. Za pomocą pierwszych poleceń można używać maszyny wirtualnej Java i kompilatora Java z różnych zestawów JDK.

update-java-alternatives wymaga obecności pliku z rozszerzeniem .jinfo w katalogu / usr / lib / jvm. Pakiet opendjk jest dostarczany z plikiem .jinfo, jdk Oracle (wcześniej Sun) nie. Alternatywnie konfigurujesz alternatywy bez update-java-alternatives :

Na przykład, aby dodać java z katalogu jvm /usr/lib/jvm/jdk-12.0.1 ( domyślny katalog pakietu Debian Oracle ) o priorytecie 2082, użyj następującego polecenia:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

Jeśli chodzi o przełączanie do różnych środowisk programistycznych:

Czy mówisz o uruchomieniu samego IDE z różnymi wersjami Java lub o użyciu różnych wersji w IDE do kompilacji i uruchomienia aplikacji?

Dla 1 .: Możesz określić, która JVM ma być używana w pliku eclipse.ini, jak opisano tutaj . Nie wiem jak to zrobić dla IDE Arduino.

Dla 2 .: W Eclipse możesz wybrać JRE / JDK, który będzie używany w Window -> Preferencje -> Java -> Zainstalowane JRE. A pod Java -> Kompilator możesz wybrać starszą zgodność Java, jeśli chcesz.

EDYCJA: Ta strona DigitalOcean ma również bardzo ładne wyjaśnienie wszystkiego, co związane z Javą na Ubuntu.

Benjamin Maurer
źródło
15

update-java-alternativesto program do aktualizacji alternatyw dla jre/jdkinstalacji.

update-alternatives to symboliczny system zarządzania linkami dla Linuksa (jestem pewien, że jest tu niewiele nowości).

Możesz i naprawdę powinieneś używać zarówno update-java-alternativesi update-alternativesrazem.

Po pierwsze, upewnij się, że wszystkie alternatywy są poprawnie skonfigurowane. java i javac to tylko kilka. Jest javadoc, rmic, serialvera inni, podstawiając powyższe zmienne dla: native2asciii /opt/jdk1.8.0_40/bin/native2asciipowinien zgłosić jeśli alternatywą jest zainstalowane i / lub wybrany.

Po skonfigurowaniu wszystkich alternatyw możesz utworzyć linki /usr/lib/jvmdo ręcznej instalacji.

Aby skonfigurować update-java-alternatives, musisz użyć ukrytego pliku o tej samej nazwie co katalog, ale poprzedzony znakiem. (kropka).

Mam nadzieję że to pomoże.

Bibliografia

man -S 8 update-java-alternatives

http://tech.lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu

fmmarques
źródło