Jak poprawnie usunąć OpenJDK / OpenJRE i ustawić SunJDK / SunJRE jako Domyślny


49

Ubuntu wydaje się faworyzować OpenJDK / JRE w stosunku do Sun JDK / JRE. Nawet po tym, jak zainstalowałem Sun JRE, JDK i wtyczkę i spędziłem trochę czasu na wydobywaniu pakietów związanych z OpenJDK, apt-get zainstalował je z powrotem z niektórymi pakietami jako zależność. Czy to zachowanie można poprawić na korzyść pakietów Sun Java? Chciałbym mieć zainstalowany jeden i jedyny stos Java (tak, to trochę OCD , ale lubię mieć czyste systemy) i chcę, aby był to Sun Java.

Aktualizacja: jak zauważa Marcos Roriz, wydaje się, że problemem jest default-jre (od którego zależą pakiety zależne od Javy) wskazujący na OpenJDK, więc wydaje się, że chodzi o to, jak zhakować default-jre / default-jdk, aby wskazać do Sun Java.


proszę, zaktualizuj odpowiedź przy pomocy Oracle
— JDK

Odpowiedzi:


35

Instalowanie Sun Java na starszych wersjach Ubuntu (9.10 i niższych)

Miałem ten sam problem raz około trzy lata temu z Ubuntu 8.04. Wystąpił dziwny problem podczas korzystania z OpenJre i problem został rozwiązany przy użyciu wersji Sun Jre. Oto kroki w terminalu, które dotyczą wersji poniżej 10.04, ponieważ od 10.04 Sun Java została usunięta i zastąpiona przez openjre:

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts

(Wszystko związane z Javą Sun. Tylko dla pewności)

Następnie, jeśli usuniesz openjdk, będziesz miał tylko Sun Java. Jeśli go nie usunąłeś, masz oba z nich. Aby przejść z jednego do drugiego, wykonaj następujące czynności:

sudo update-java-alternatives -l - Spowoduje to wyświetlenie listy silników Java, których możesz używać.

Nazwa alternatywy java to ta po lewej, więc na przykład openjdk wyglądałby tak:

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

I ustawiłbyś system na openjdk w następujący sposób:

sudo update-java-alternatives -s java-6-openjdk

Jeśli chcesz korzystać z Sun, zrobiłbyś to (po instalacji pakietów Sun):

sudo update-java-alternatives -s java-6-sun

Jeśli chcesz korzystać z wersji java 7, po prostu zmień numer 6 wymieniony powyżej na 7. Na przykład, jeśli chcę zainstalować wersję 7 openjre, zrobiłbym:

sudo apt-get install openjdk-7-jre default-jre default-jre-headless

Instalowanie Sun Java na nowszych wersjach Ubuntu (10.04 i wyżej)

Otwórz terminal i wpisz następujące polecenie:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update   
sudo apt-get upgrade   
sudo apt-get install oracle-java7-installer

To powinno zainstalować wersję Sun Java w twoim systemie. Aby to zmienić, po prostu wykonaj następujące czynności, jeśli masz inne alternatywy Java:

sudo update-java-alternatives -s java-7-oracle  

Jeśli chcesz, aby instalacja była automatyczna, wpisz następujące polecenie:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

następnie wykonaj następujące czynności, aby ustawić domyślne zmienne środowiskowe:

sudo apt-get install oracle-java7-set-default

Pamiętaj, że PPA obejmuje wersje 6, 7 i 8. Możesz więc zainstalować dowolną z nich, po prostu zmieniając numer w wierszu instalacji, na przykład:

sudo apt-get install oracle-java8-installer

Zainstalowałbym Javę 8. Po zainstalowaniu wersji Java, której chcesz używać i ustawieniu domyślnej wersji za pomocą update-java-alternativespolecenia, możesz sprawdzić, której wersji używasz, wpisując następujące polecenie:

java -version

Pokaże Ci domyślną wersję, której używasz w tym momencie.

Chciałbym również wspomnieć, że OpenJRE / JDK przeszedł długą drogę od 2 lub 3 lat temu, kiedy miał wiele problemów, które zostały rozwiązane przez przejście na Sun Java.


11

Myślę, że problem polega na tym, że niektóre pakiety Java polegają na default-jre, co wskazuje na openjdk-jre. Nie sądzę, że istnieje prosty sposób na trwałe odinstalowanie openjdk. Chodzi o to, że prawdopodobnie po raz kolejny wpadniesz na openjdk podczas instalowania pakietu / programu Java.

Ale jeśli chcesz mieć jedno i drugie, czy łatwo jest ustawić programy wykonawcze Java (java, javah, javap itd.) Na implementację sun. Zrób to:

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

lub jeśli jesteś programistą Java (zainstaluj sdk i srcs):

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source

I ustaw go jako programy domyślne za pomocą:

sudo update-java-alternatives -s java-6-sun

1
Tak, wierzę, że chodzi o default-jre. Nie, naprawdę nie chcę mieć zarówno Sun, jak i Open JDK - oto o co chodzi - aby mieć jeden i jedyny i niech to będzie Sun JDK. Czy istnieje sposób włamania się do default-jre, aby wskazać Sun JRE?
— Ivan

Tak, default-jretego wieczoru spróbuję odbudować pakiet, aby wskazał Sun-Java. Teraz jestem @ work.
— Marcos Roriz Junior

6

.jdk1.6.0_23.jinfoPlik powinien być wykaz dostarczonych programów i ich ścieżkach. Jest opisowy nagłówek, po którym następuje pusty wiersz. Następnie lista programów w formacie trzech pól: typ wpisu (jre / jkd / plugin); Nazwa programu; i ścieżka. Powinieneś mieć jakieś pliki jinfo, których możesz użyć, aby zobaczyć, jak powinna wyglądać zawartość. Jest to prawdopodobnie wykorzystywane przez mechanizm alternatywny w celu ustalenia, które łącza należy utworzyć. Szefem mojego pakietu Sun jest.

name = java-6-sun-1.6.0.22
alias = java-6-sun
priorytet = 63
sekcja = niewolna

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm

Jeśli chcesz zastąpić domyślne polecenia Java bez użycia mechanizmu alternatywnego, umieść swoją ścieżkę Java przed / usr / bin na swojej ścieżce.

Podczas ręcznej instalacji instaluję Javę w /opt. dla twojej instalacji zainstalowałbym w /opt/jdk1.6.0_23. Następnie umieszczam ścieżkę $JAVA_HOME/binna początku mojej PATHzmiennej.

EDYCJA: To jest cały plik Sun. Uwaga .java-6-sun.jinfoto symboliczny link do .java-6-sun-1.6.0.22.jinfo.

name = java-6-sun-1.6.0.22
alias = java-6-sun
priorytet = 63
sekcja = niewolna

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm
Jre javaws / usr / lib / jvm / java-6-sun / jre / bin / javaws
jre jcontrol / usr / lib / jvm / java-6-sun / jre / bin / jcontrol
jre keytool / usr / lib / jvm / java-6-sun / jre / bin / keytool
jre pack200 / usr / lib / jvm / java-6-sun / jre / bin / pack200
jre policytool / usr / lib / jvm / java-6-sun / jre / bin / policytool
jre rmid / usr / lib / jvm / java-6-sun / jre / bin / rmid
jre rmiregistry / usr / lib / jvm / java-6-sun / jre / bin / rmiregistry
jre unpack200 / usr / lib / jvm / java-6-sun / jre / bin / unpack200
jre orbd / usr / lib / jvm / java-6-sun / jre / bin / orbd
jre servertool / usr / lib / jvm / java-6-sun / jre / bin / servertool
jre tnameserv / usr / lib / jvm / java-6-sun / jre / bin / tnameserv
jre jexec / usr / lib / jvm / java-6-sun / jre / lib / jexec
jdk HtmlConverter / usr / lib / jvm / java-6-sun / bin / HtmlConverter
jdk appletviewer / usr / lib / jvm / java-6-sun / bin / appletviewer
jdk apt / usr / lib / jvm / java-6-sun / bin / apt
jdk extcheck / usr / lib / jvm / java-6-sun / bin / extcheck
jdk idlj / usr / lib / jvm / java-6-sun / bin / idlj
jdk jar / usr / lib / jvm / java-6-sun / bin / jar
jdk jarsigner / usr / lib / jvm / java-6-sun / bin / jarsigner
jdk javac / usr / lib / jvm / java-6-sun / bin / javac
jdk javadoc / usr / lib / jvm / java-6-sun / bin / javadoc
jdk javah / usr / lib / jvm / java-6-sun / bin / javah
jdk javap / usr / lib / jvm / java-6-sun / bin / javap
jdk jconsole / usr / lib / jvm / java-6-sun / bin / jconsole
jdk jdb / usr / lib / jvm / java-6-sun / bin / jdb
jdk jhat / usr / lib / jvm / java-6-sun / bin / jhat
jdk jinfo / usr / lib / jvm / java-6-sun / bin / jinfo
jdk jmap / usr / lib / jvm / java-6-sun / bin / jmap
jdk jps / usr / lib / jvm / java-6-sun / bin / jps
jdk jrunscript / usr / lib / jvm / java-6-sun / bin / jrunscript
jdk jsadebugd / usr / lib / jvm / java-6-sun / bin / jsadebugd
jdk jstack / usr / lib / jvm / java-6-sun / bin / jstack
jdk jstat / usr / lib / jvm / java-6-sun / bin / jstat
jdk jstatd / usr / lib / jvm / java-6-sun / bin / jstatd
jdk native2ascii / usr / lib / jvm / java-6-sun / bin / native2ascii
jdk rmic / usr / lib / jvm / java-6-sun / bin / rmic
jdk schemat / usr / lib / jvm / java-6-sun / bin / schematagen
jdk serialver / usr / lib / jvm / java-6-sun / bin / serialver
jdk wsgen / usr / lib / jvm / java-6-sun / bin / wsgen
jdk wsimport / usr / lib / jvm / java-6-sun / bin / wsimport
jdk xjc / usr / lib / jvm / java-6-sun / bin / xjc
plugin xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
wtyczka mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so

Nie mam zainstalowanej żadnej Java, więc nie mam z nią nic związanego, nic zainstalowanego, żadnych plików .jinfo itp. Sam utworzyłem folder usr / lib / jvm, ponieważ czytam, że tam jest domyślnie zainstalowany, i Tak to zrobię. Dlatego chciałbym zobaczyć pełną zawartość pliku .jinfo dla JDK firmy Sun.
— jurchiks

Dodałem pełny plik .jinfo słońca.
— BillThor

6

Usuń openjdk i icedtea:

apt-get purge openjdk-\* icedtea-\* icedtea6-\*

dodaj następujące elementy do /etc/apt/sources.list

deb http://ppa.launchpad.net/webupd8team/java/ubuntu YOUR_UBUNTU_VERSION_HERE main

zainstaluj Sun / Oracle JRE lub JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 

2
A po tym w ogóle nie masz Javy ... Pytanie w rzeczywistości dotyczy tego, kogo zastąpić jednym, a nie jak usunąć OpenJDK z twojego systemu. Dodaj nieco więcej informacji do swojej odpowiedzi, na pytanie nie można odpowiedzieć tylko wykonując następujące kroki.
— Bruno Pereira,

4

Dodałem tę linię do pliku środowiska / etc /: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" i dodałem JAVA_HOME / bin do zmiennej PATH, ALE system operacyjny nadal nie rozpoznaje polecenia java, mówi: nie jest zainstalowany i oferuje mi gcj i openjdk.

Sprawdziłeś to?

echo $JAVA_HOME 
echo $PATH

Jeśli nie potrzebujesz: odinstaluj openjdk i gcj w synaptic lub w apt-get.

apt-get remove gcj 
apt-get remove openjdk

Wówczas zakazałbym Javy alternatyw i robiłem głównie, jak sugerował BillThor, dlaczego dałem mu głos.

which javac
which java

powinien wskazywać, gdzie zainstalowałeś Javę i gdzie znajduje się ona w ŚCIEŻCE.


Nie mam zainstalowanego gcj ani openjdk ... Po prostu wypróbowałem whichpolecenia i nic nie drukuje. Okazało się, że zapomniałem symbolu $ przed zmienną JAVA_HOME w PATH, zrestartuję teraz i zobaczę, jak to działa.
— jurchiks

Zrestartowałem komputer, ale whichpolecenie wciąż nic nie pokazuje. Zarówno zmienne JAVA_HOME, jak i PATH są poprawne: echo $ JAVA_HOME /usr/lib/jvm/jdk1.6.0_23 echo $ PATH $ JAVA_HOME / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games Gdzie może być problem? Edycja: BOŻA CHOLERA, dlaczego w komentarzach nie ma podziałów?
— jurchiks

a) ponowne uruchomienie komputera nie powinno być wymagane. Ponownie otwórz powłokę powinno wystarczyć lub przeloguj się jako użytkownik. b) Zajrzyj do pomocy dotyczącej formatowania komentarzy. Rozumiem, echo $PATH $JAVA_HOME/bin:/usr/local/sbin...ale w rezultacie $ JAVA_HOME musi zostać oszacowany - coś jest nie tak lub raportowanie jest błędne. c) Linebreaks: Nie ma ich, więc ciągle wciskamy ENTER zbyt wcześnie, a potem zegar tyka, ponieważ edycja jest dozwolona tylko przez kilka minut - ciągle wchodzę w tę pułapkę. Nienawidzę tego! :)
— użytkownik nieznany

Cóż, zmienna JAVA_HOME znajduje się w tym samym pliku (/ etc / environment), tylko w pierwszym wierszu. Może powinno być gdzie indziej? Rozpoznaje to, gdy piszę echo $JAVA_HOME...
— jurchiks,

Moje pytanie brzmiało: czy echo $PATHwypisuje, $JAVA_HOME...czy wypisuje wartość JAVA_HOME, tj .: /usr/lib/jvm/jdk1.6.0_23?
— użytkownik nieznany

3
  1. Otwórz System-> Administracja-> Menedżer pakietów Synaptic, a następnie całkowicie usuń OpenJDK.
  2. Testowa wersja pisania Java java -versionw powłoce (wyświetli się tylko Sun Java)
  3. Rodzaj sudo update-java-alternatives -l
  4. skończyłeś. Teraz masz zainstalowaną tylko Javę Sun i jest ona skonfigurowana jako domyślny jdk

i działa tylko, jeśli masz zainstalowane dwa jdk i chcesz ustawić sun-java jako środowisko domyślne


2

Używając Ubuntu 10.10, wydaje się, że musisz najpierw oznaczyć do usunięcia libaccess-bridge-java w Synaptic, a następnie zaznaczyć openjdk-6-jre-headless.

Skończyło się na liście do usunięcia:

ca-certyfikaty-java, icedtea-6-jre-cacao, libaccess-bridge-java, libaccess-bridge-java-jni, openjdk-6-jre, openjdk-6-jre-headless, openjdk-6-jre-lib.

To działało, ale pozostawiło katalog /etc/java-6-openjdkzawierający różne pliki i podkatalogi, które odizolowałem w nowym katalogu. Nie było żadnych niezwykłych efektów, więc przypuszczalnie jest to tylko resztka.

Zostało mi to z Javą, którą pobrałem bezpośrednio ze strony Java. Jednak pomimo ustawienia go jako domyślnego i utworzenia łącza do katalogu wtyczek Firefox, to już nie działało. Instalując sun-java6-jre i powiązane z nim pakiety gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin i unixodbc, za pośrednictwem Synaptic, zobaczyłem, że wtyczka Java znów zaczyna działać. Usunięcie łącza w katalogu wtyczek i zastąpienie go rzeczywistym plikiem libnpjp2.so nie działało. Użycie łącza do plików libjavaplugin_oji.so w katalogach ns7 lub ns7-gcc29 w Javie zainstalowanych przez Synaptic również nie działało. Sugeruje mi to, że aby uzyskać najnowszą wtyczkę Java w Firefoksie, można postępować zgodnie z instrukcjami na stronie internetowej Java, i że do uruchomienia pobranej Javy potrzebna jest zintegrowana Java Java dowolnej odmiany. który następnie polega na działaniu na otaczających go plikach po aktywacji wtyczki. Chociaż pełne zrozumienie kodu składającego się z Javy i Linuksa byłoby konieczne, aby naprawdę rozwiązać jego tajemnice, być może te eksperymenty są pomocne w znalezieniu powodów, dla których w tym przypadku mogą być potrzebne dwie Javy. Można przynajmniej usunąć całą Javę, jeśli ktoś uzna to za przydatne.


2

To, co robię na nowych komputerach z systemem Ubuntu 10.10, to

  • dodaj java-6-sun,
  • usuń openJDK (najpierw dodaj Sun Java, w przeciwnym razie kilka rzeczy zostanie usuniętych, takich jak tomcat itp.)

To jest dla mnie w porządku, nie ma już zależności openJDK


java-6-sun nie jest to pakiet domyślny ubuntu, czy jest?
— Fabian Zeindl

2

Odpowiedzi na to pytanie nie działały dla mnie. Oznacza to, że następujące nie powiodło się:

sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre

Z błędem:

Virtual packages like 'sun-java6-jre' can't be removed

Zamiast tego wypróbuj te instrukcje :

  1. Otwórz Centrum oprogramowania Ubuntu .
  2. Szukaj IcedTea.
  3. Usuń wtyczkę Java IcedTea ( icedtea-6-jre-cacao), jeśli jest zainstalowana.
  4. Wybierz OpenJDK Java 7 Runtime.
  5. Kliknij Zainstaluj.
  6. Poczekaj, aż pakiet 41,6 MB zostanie pobrany i zainstalowany.

OpenJDK (IcedTea) jest teraz zainstalowany, co powinno pozwolić (jeśli wystąpił ten błąd) na kontynuowanie instalacji JDK Oracle bez błędu.

Zobacz też:


1

Po pierwsze: usuń wtyczkę openjdk i icedtea.

sudo apt-get remove openjdk* icedtea*

Po drugie: skopiuj plik .bin jdk do / opt lub / usr / java i rozpakuj go.

sudo cp jdk_1.16.0.bin /usr/java

Po trzecie: umieść łącze pliku java do / usr / bin /

ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java
ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac

zaktualizuj alternatywy za pomocą update-alternatives

Utwórz symboliczne łącze do wtyczki Java w katalogu wtyczek Firefox.

Utwórz dowiązanie symboliczne do pliku libnpjp2.so wtyczki Java w katalogu wtyczek Firefox:

   cd  

<Firefox>/plugins


 ln -s  

<JRE>/lib/i386/libnpjp2.so .

Mam nadzieję że to pomoże.


Nie przegapiłeś ani jednego kroku po cp i przed połączeniem? I: Sugerujesz ręczne łączenie, ale w java / bin jest 45 plików, większość z nich jest wykonywalna. Czy chciałbyś utworzyć 25 symbolicznych linków? Wolałbym zmienić ŚCIEŻKĘ.
— użytkownik nieznany

o ile wiem, kroki są prawidłowe. możesz zapoznać się z samouczkiem na stronie instalacyjnej Java (Oracle). powyższe kroki działały jednak dla mnie! daj mi znać, jak sobie radzisz.
— Ubuntuser
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.