Eclipse - brak Java (JRE) / (JDK)… brak maszyny wirtualnej


278

Próbuję ponownie uruchomić Eclipse v3.5 (Galileo) na moim komputerze - wcześniej go uruchomiłem bez żadnych problemów, ale teraz otrzymuję ten błąd:

Środowisko Java Runtime Environment (JRE) lub Java Development Kit (JDK) musi być dostępne w celu uruchomienia Eclipse. Nie znaleziono maszyny wirtualnej Java po przeszukaniu następujących lokalizacji: C: \ eclipse \ jre \ javaw.exe javaw.exe w bieżącej ŚCIEŻCE

Właśnie wykonałem nową instalację zarówno JDK, jak i SDK.

Mam system Windows 7 (x64).

O co chodzi? Jak to naprawić?

Nie mogę uruchomić żadnego z ipconfig / tracert / lub ping.


3
Java Runtime Environmentjest JRE nie SDK ...
user85421

1
Zainstaluj środowisko JRE - daje to plik javaw.exe na twojej ścieżce. JDK's nie.
Thorbjørn Ravn Andersen

12
@Carlos, każdy pakiet JDK przynosi prywatne środowisko JRE.
Thorbjørn Ravn Andersen

3
@ Thorbjørn: i o co chodzi? Wiem o tym, a także, że JDK przynosi także publiczne środowisko JRE. Napisałem, że „Java Runtime Environment to nie SDK”, ale musisz przeczytać oryginalny post (przed edycją 11 stycznia), aby zrozumieć, dlaczego napisałem: „Java Runtime Environment ( SDK ) or ...”
user85421

11
Jeśli niedawno zainstalowałeś JDK w innej ścieżce po zainstalowaniu Eclipse, możesz napotkać ten problem. Wynika to z faktu, że przy instalacji po raz pierwszy ścieżka stała JDK środowiska eclipse w kodzie eclipse.ini jest zaszyfrowana. Po prostu zmień poprawną ścieżkę JDK w eclipse.ini. To powinno rozwiązać ten błąd.
Rajaraman

Odpowiedzi:


221

Eclipse domyślnie spróbuje uruchomić z domyślnym „ java.exe” (pierwszym, do którego odwołuje się Twój PATH)

Trzy rzeczy do zapamiętania:

  • „Instalowanie” środowiska JRE lub JDK może być tak proste, jak rozpakowanie lub skopiowanie go z innego komputera: nie ma specjalnych kroków instalacyjnych i możesz mieć tyle różnych wersji JVM (1.4, 5.0, 6.0 ...), ile chcesz , „zainstalowany” (skopiowany) prawie w dowolnym miejscu na dysku.
  • Polecam zawsze uruchamiać Eclipse z najnowszą możliwą wersją środowiska JRE (aby skorzystać z najnowszych ewolucji hotspotów ). Możesz:
  • JVM, do którego będziesz się odnosić w ramach sesji Eclipse, nie zawsze jest używany do uruchamiania Eclipse, ponieważ:
    • Potrzebujesz tylko JRE, aby uruchomić Eclipse, ale po uruchomieniu Eclipse powinieneś zarejestrować JDK dla swoich projektów (szczególnie dla źródeł Java i celów debugowania, również teoretycznie do kompilacji, ale Eclipse ma swój własny kompilator Java) Uwaga: Możesz zarejestrować tylko środowisko JRE w środowisku Eclipse, ponieważ wystarczy uruchomić program, ale ponownie pakiet JDK pozwoli na więcej operacji.
    • Mimo że domyślnie zarejestrowana Java w Eclipse jest używana do uruchomienia sesji, możesz zarejestrować starszy SDK (w tym inny niż Sun), aby uruchomić / debugować swoje programy za pomocą JRE podobnego do tego, który będzie faktycznie wykorzystywane w produkcji.

Zainstalowane środowiska JRE


Czerwiec 2012, jmbertucci komentuje:

Używam 64-bitowego systemu Windows 7 i zainstalowałem 32-bitowe środowisko JRE. Pobrałem Eclipse 64-bit, który szuka 64-bitowej wersji JRE. Ponieważ nie miałem 64-bitowego środowiska JRE, zgłosił błąd, co ma sens.

Poszedłem na stronę instalacji ręcznej Java (która nie była tak bezpośrednio dostępna, jak chcesz) i zainstalowałem wersję 64-bitową. Zobacz „ Pobieranie Java dla wszystkich systemów operacyjnych ”. To wszystko, czego potrzebowałem.


Kwiecień 2016: Steve Mayne dodaje w komentarzach :

Musiałem edytować eclipse.iniplik, aby odwoływał się do poprawnej ścieżki Java - Eclipse w ogóle nie korzysta ze środowiska, PATHgdy jest w nim wartość eclipse.ini.


42
To pytanie / odpowiedź jest nieco stare, ale natrafiłem na ten problem, więc opublikuję swoje notatki. Korzystam z Win7 64bit i zainstalowałem 32-bitową wersję JRE. Pobrałem Eclipse 64bit, który szuka 64-bitowego środowiska JRE. Ponieważ nie miałem 64-bitowego środowiska JRE, zgłosił błąd, co ma sens. Poszedłem na stronę instalacji ręcznej Java (która nie była tak bezpośrednio dostępna, jak chcesz) i zainstalowałem wersję 64-bitową. java.com/en/download/manual.jsp To wszystko, czego potrzebowałem.
jmbertucci

2
@Nuktu: Dodałem komentarz jmbertucci do odpowiedzi
VonC,

@jmbertucci: dziękuję za twoje notatki. Dodałem je do odpowiedzi dla większej widoczności.
VCC,

2
@VonC Musiałem edytować plik eclipse.ini, aby odwoływał się do poprawnej ścieżki java - Eclipse w ogóle nie korzysta ze ŚCIEŻKI środowiska, gdy w eclipse.ini jest wartość
Steve Mayne

1
@ SteveMayne Interesujące, dziękuję. W odpowiedzi umieściłem twój komentarz dla większej widoczności.
VCC

141

Po prostu skopiuj ten plik:

c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe

do folderu Eclipse

* Uwaga przetestowane tylko dla systemu Windows

Zamiana javaw.exe w folderze Eclipse


Szukałem prostego rozwiązania, ponieważ ta odpowiedź nie zadziałała, na wypadek gdyby ktoś miał podobną sytuację, zmiana katalogu vm w pliku eclipse.ini może pomóc .
Noha Kareem,

3
Nie działało dla mnie, dało mi błąd: otwarcie klucza rejestru „Software \ Javaoft \ Java Runtime Environment”. Musiałem skopiować cały folder jre7 (w moim przypadku) do katalogu Eclipse i zmienić jego nazwę na jre. Potem zadziałało.
CuriousMarc,

Jeśli ktoś zawiedzie, spróbuj skopiować folder Jre do folderu Eclipse.
Arthur Zhixin Liu,

@NohaKareem Twoja rada była dla mnie najbliższa. Niestety mój folder „jre” zawierał tylko „lib”, więc kopiowanie w folderze Java „jdk” (chociaż większy o pojemności 350 MB, ale miał wewnętrzny folder „bin”) i zmiana jego nazwy na „jre” działało. Dzięki.
Mindsect Team

Po zainstalowaniu zarówno 32-bitowej, jak i 64-bitowej wersji Java, ale na ścieżce 32-bitowej Java, próba otwarcia 64-bitowego zaćmienia zakończy się niepowodzeniem, umieszczenie 64-bitowego pliku javaw obok wycięcia powoduje, że działa.
DiamondDrake

83

Wszystkie pozostałe odpowiedzi dotyczące ustawiania tylko tych JAVA_HOMEnie są całkowicie poprawne. Eclipse mianowicie nie konsultuje się zJAVA_HOME . Przyjrzyj się bliżej komunikat o błędzie:

... w twojej obecnej ŚCIEŻCE

Dosłownie powiedział PATH, że nie JAVA_HOME.

Kliknij prawym przyciskiem myszy Mój komputer i wybierz Właściwości (lub naciśnij Winkey+ Pause), przejdź do zakładki Zaawansowane , kliknij przycisk Zmienne środowiskowe , na liście Zmienne systemowe na dole wybierz Path(nie, nie Classpath ), kliknij Edytuj i dodaj ;c:\path\to\jdk\binna końcu wartości.

Alternatywnie i jeśli nie jest obecny, możesz również dodać JAVA_HOMEzmienną środowiskową i użyć jej w PATH. W tym samym oknie dialogowym kliknij Nowy i dodaj JAVA_HOMEz wartością c:\path\to\jdk. Następnie możesz dodać ;%JAVA_HOME%\binna końcu wartości Pathustawienia.


2
Nie działało :) dane o nazwie środowiska: Ścieżka --- wartość: C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin
Wallter

1
Ścieżki ze spacjami muszą być ujęte w cudzysłowy.
BalusC,

moja ścieżka była wcześniej skonfigurowana doskonale skonfigurowana, kompilator Borland dokonał edycji pola ścieżki i zastąpił ścieżkę java własną ścieżką, teraz stała, dzięki!
Akhil Jain,

1
@BalusC W rzeczywistości nie ma potrzeby ujmowania ścieżek w cudzysłowie podczas konfigurowania zmiennych środowiskowych PATH w systemie Windows. Wystarczy ich oddzielenie średnikiem ( ;).
informatik01

to jest odpowiedź, która go rozwiązuje. po kilku godzinach przeszukiwania tych, którzy mają ten sam problem, potrzebujesz: 1) upewnij się, że wszystko jest 64-bitowe. Powinien być instalowany automatycznie w „plikach programów”, NIE w „plikach programów (x86)”. 2) Zapisz -VM w folderze bin, który mają inne odpowiedzi. 3) Ustaw ścieżkę tak, jak powiedział ten facet. Nic się nigdy nie stanie, jeśli nie będziesz mógł uruchomić Java z wiersza poleceń. 4) raduj się
triplebig

36

Otwórz Właściwości systemu Windows z panelu sterowania i znajdź sekcję zmiennych środowiskowych:

  • Dodaj wpis JAVA_HOME wskazujący katalog, w którym jest zainstalowany JDK (np. C: \ Program Files \ Java \ jre6)
  • Znajdź wpis Ścieżka i dodaj na końcu:% JAVA_HOME% \ bin
  • OK zmiany
  • Zrestartuj zaćmienie, aby poznać nowe środowisko

Większość narzędzi Java będzie teraz mogła znaleźć instalację Java za pomocą zmiennej środowiskowej JAVA_HOME lub szukając pliku java.exe / javaw.exe w zmiennej środowiskowej Path.


3
Kiedy dodałem nazwę: JAVA_HOME wartość: „C: \ Program Files (x86) \ Java \ jdk1.6.0_14;% JAVA_HOME% \ bin” Nadal
pojawia

24

Jeśli pobierzesz 64-bitową wersję Eclipse; będzie szukał 64-bitowej wersji JRE. Jeśli pobierzesz 32-bitową wersję Eclipse; będzie szukał 32-bitowej wersji JRE

To, co zrobiłem, to zainstalowanie 32-bitowej i 64-bitowej wersji środowiska JRE. Możesz to uzyskać ze strony SUN Oracle. Witryna JAVA wydaje się automatycznie instalować 32-bitową wersję Java. Myślę, że dzieje się tak z powodu przeglądarki internetowej.


2
Jak powiedział ladookie, najprawdopodobniej problem polegał na tym, że przeglądarka uruchomiła zły kod na stronie Javy i otrzymywała niewłaściwą wersję JAVA ...
Wallter

1
Speedbaron jest całkowicie tutaj. Jeśli modyfikujesz zmienną środowiskową PATH, upewnij się, że podałeś ścieżkę poprawnej wersji. Mój 64-bitowy system Windows 7 miał zainstalowaną 32-bitową wersję JRE (nie wiem dlaczego), więc zainstalowałem wersję 64-bitową i dodałem do PATH nowy katalog. Wydaje się, że teraz działa dobrze.
musicliftsme

1
To był mój problem. Należy pamiętać, że system Windows instaluje 64-bitowe C:\Program Files\Javai 32-bitowe C:\Program Files (x86)\Java.
styfle

10

Okazało się, że wszystko, co musiałem zrobić, to zmienić „ścieżkę” na:

„C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin „

to zrobiło :)


1
BTW, powinieneś użyć jdk1.6.0_16 lub nowszego. Używając jdk 1.6.0_14, nie możesz poprawnie używać punktów przerwania w Eclipse: bugs.eclipse.org/bugs/show_bug.cgi?id=279137
Csaba_H

9

Mam Windows 7 64-bit i miałem ten sam problem z zaćmieniem. Aby go uruchomić, musiałem użyć przeglądarki Internet Explorer (wersja 64-bitowa), aby pobrać java. To był jedyny sposób, aby zachęcić Javę do zainstalowania wersji 64-bitowej. Kiedy użyłem firefoxa do zainstalowania java, automatycznie zainstalowałem wersję 32-bitową (tak idiotycznie!). Wersja 64-bitowa Eclipse nie wykryłaby wersji 32-bitowej Java.


Nie mam już problemu - ale wydaje się to dobrym rozwiązaniem i ma sens - warto przetestować to z innymi 64
bitowymi

7

Rozwiązanie w pigułce:

Kliknij prawym przyciskiem myszy Mój komputer, kliknij właściwości, a następnie zaawansowane ustawienia systemu, pojawi się okno właściwości systemu, w zakładce zaawansowane wybierz zmienne środowiskowe, okno zmiennych środowiskowych wyskoczy, w sekcji Zmienne systemowe wyszukaj PATHzmienną i edytuj wartość , zmieniając go (wersja; jre6, jre7 itp.) na dowolny jre, którego używasz, np. dla mojego:C:\Program Files\Java\jre7\bin


7

Nie polegaj na zmiennej ścieżki systemu Windows, ponieważ zmienia się ona niemal w każdej aktualizacji. Np. Chromowana (32-bitowa na 64-bitowej maszynie) aktualizacja Java zastępuje ogólnosystemową 64-bitową maszynę JVM 32-bitową maszyną JVM. Zauważ też, że ten wpis musi być ostatnim wpisem w eclipse.ini, w przeciwnym razie nie działa, i - jak podano inaczej - zmienna JAVA_HOME NIE jest oceniana przez eclipse.exe.

nawet jeśli Twoja JAVA_HOME i ścieżka są skonfigurowane poprawnie, może to oznaczać ten problem, więc najprostszym sposobem jest otwarcie pliku eclipse.ini w folderze instalacyjnym środowiska eclipse

-vm

C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe

zamień C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe swoją ścieżką jdk lub jre`s


Głosuję za poprawną odpowiedzią. Nie polegaj na zmiennej ścieżki systemu Windows, ponieważ zmienia się ona niemal w każdej aktualizacji. Np. Chromowana (32-bitowa wersja na 64-bitowej maszynie) aktualizacja Java zastępuje ogólnosystemową 64-bitową maszynę JVM 32-bitową maszyną JVM. Zauważ też, że ten wpis musi być ostatnim wpisem w eclipse.ini, w przeciwnym razie nie działa. I - jak podano inaczej - zmienna JAVA_HOME NIE jest oceniana przez eclipse.exe. Edytuj odpowiednio swoją odpowiedź.
Heri

To najlepsza odpowiedź, ponieważ bezpośrednio rozwiązuje rzeczywisty problem. Zaćmienie szuka ścieżki dla określonego parametru, a ta wartość jest niepoprawna ... więc poprawienie wartości rozwiązuje problem.
BuvinJ

6

W swoim eclipse.inipliku musisz zaktualizować ścieżkę do maszyny wirtualnej, aby wskazywała tę samą lokalizację, w której javaw.exejest zainstalowana na komputerze.


6

Nie martw się, zostałem również zniszczony przez ten błąd i fatalny, a kiedy go dostałem, byłem tak sfrustrowany, że nawet dawałem sobie spokój z programowaniem na Androida, ale rozumiem, po prostu najpierw skopiuj ten kod i wklej do zmiennej systemowej Pod ścieżką ...

C: \ Program Files; C: \ Winnt; C: \ Winnt \ System32; C: \ Program Files \ Java \ jre6 \ bin \ javaw.exe

Teraz skopiuj folder „jre” ze swojej ścieżki, tak jak mam „jre” pod tą ścieżką

            C:\Program Files\Java

i wklej go do folderu eclipse oznacza, gdzie znajduje się plik eclipse.exe. tak jak mam skonfigurowane zaćmienie w tej lokalizacji

    F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse

Więc w folderze Eclipse wklej FOLDER „jre”. Jeśli masz „jre6”, zmień jego nazwę na „jre” .... i uruchom swoje zaćmienie, otrzymasz rozwiązanie ...

   //<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>                 

INNE ROZWIĄZANIE: 2

Jeśli problemu nie można rozwiązać za pomocą powyższych kroków, wykonaj następujące kroki

  1. Skopiuj folder „jre” ze ścieżki Java, na przykład C: \ Program Files \ Java \ jre6 * itp., I wklej go do katalogu Eclipse (Gdzie jest dostępne Twoje zaćmienie)
  2. Przejdź do pliku eclipse.ini, otwórz go.
  3. Zmień katalog pliku javaw.exe jak

-vmF: \ Softwares \ LANGUAGES SOFTEARE \ Android Setup \ eclipse Indigo wersja 32 Bit \ jre \ bin / javaw.exe

Teraz, kiedy uruchomisz Eclipse, wyszuka javaw.exe, więc przeszuka ścieżkę w eclipse.ini, ponieważ jest teraz w tym samym folderze, więc uruchomi javaw.exe i zacznie działać .

Jeśli nadal masz jakieś zapytanie, możesz je ponownie zadać, po prostu przejdź do mojego profilu i znajdź mój identyfikator e-mail. bo uwielbiam forum z przepełnieniem stosu, dzięki czemu jestem programistą. *


5

Zmodyfikowałem mój plik eclipse.ini, aby zaktualizować nowo zaktualizowany JDK. Wcześniej miałem jdk1.7.0_09 i zaktualizowałem teraz do jdk1.7.0_80 i zaćmienie zgłosiło ten błąd.

Środowisko wykonawcze Java (JRE) lub Java Development Kit (JDK) musi być dostępne w celu uruchomienia Eclipse. Nie znaleziono maszyny wirtualnej Java po przeszukaniu następujących lokalizacji: C: / Program Files / Java / jdk1.7.0_09 / bin / javaw

Po zaktualizowaniu pliku eclipse.ini z poziomu

-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw

do

-vm
C:/Program Files/Java/jdk1.7.0_80/bin/javaw

Zaćmienie działa dobrze.


1
To rozwiązanie działało dla mnie - dzięki Lucky. Zaćmienie ładuje środowisko JRE, do którego odwołuje się plik ini, więc zaakceptowana odpowiedź jest niepoprawna w sugerowaniu, że patrzy na ścieżkę env.
Steve Mayne


3

jeśli po dodaniu C: \ Program Files \ Java \ jdk1.8.0_92 \ bin w zmiennej PATH w zmiennych środowiskowych zaćmienie dało ten sam błąd

sprawdź plik ustawień konfiguracji zaćmienia znaleziony w folderze zaćmienia, musisz zobaczyć tę samą ścieżkę jdk, którą masz w C: \ program Files

wprowadź opis zdjęcia tutaj

Mam nadzieję, że to pomoże.


2

Kiedy miałem taki problem, w moim przypadku miałem zainstalowaną wersję x64 JDK + JRE z Eclipse x86. Więc zainstalowanie J86 + JRE x86 rozwiązało mój problem :) Również utworzyłem jrefolder w folderze Eclipse i skopiowałem binfolder z mojej lokalnej ścieżki C:\Program Files (x86)\Java\jre7do ..\eclipse\jre\.


2
  • 64-bitowy system operacyjny -> Potrzebujesz: 64-bitowy Java i 64-bitowy Eclipse
  • 32-bitowy system operacyjny -> Potrzebujesz: 32-bitowy Java i 32-bitowy Eclipse

jeśli zaktualizujesz wersję Java z domyślną aktualizacją na komputerze 64-bitowym (i masz 32-bitową przeglądarkę ), Java zainstaluje wersję 32-bitową. Powinieneś znaleźć 64-bitową wersję Java i zainstalować ją.


1

W zeszłym tygodniu miałem współpracownika z tym właśnie problemem. Naprawił to, instalując wersję Eclipse x64 i JDK x64.

Edycja: ponownie wykorzystał swój stary obszar roboczy po zainstalowaniu niezbędnych wtyczek, więc nie powinno to stanowić większego problemu


1

Jest na to łatwiejszy sposób. Po prostu uruchom cmd x64. Wpisz cmd x64, aby pasek wyszukiwania w menu Start, a znajdziesz go :) Możesz też ustawić ścieżkę do plików programów (x86) ... Na przykład C: \ Program Files (x86) \ Java \ jre6


1

Wystarczy dodać JRE PATH FOR Ex: C: \ Program Files \ Java \ jre5 \ bin w zmiennej środowiskowej Put ";" pomiędzy każdą ścieżką. Następnie kliknij eclipse.exe To zadziała .....


1

Przyczyną tego błędu jest to, że zaćmienie wymaga środowiska JRE do uruchomienia, którego nie może znaleźć. Najpierw przeszukuje katalog bieżący, następnie plik eclipse.ini, a następnie ścieżkę systemową. Więc jeśli nie może znaleźć poprawnego pliku JVM (wersje bitowe są różne) w żadnym z tych trzech miejsc, to szopuje

Zalecanym sposobem jest edycja pliku eclipse.ini i poinformowanie eclipse, gdzie dokładnie szukać vm / jre, poprzez włączenie tej linii do pliku:

-vm
[ścieżka do pliku java.exe] (który ogólnie znajduje się w „C: \ Program Files \ Java \ jre7 \ bin”)

PS Aby edytować plik eclipse.ini, konieczne może być jego przeniesienie, edycja, a następnie wklejenie z powrotem

Źródło: - wiki


1

Przede wszystkim dziękuję YouYou za jego rozwiązanie! Próbowałem odpowiedzi YouYou ( https://stackoverflow.com/a/14464653/801919 ). Początkowo nie działało to dla mnie. Oto kroki, które musiałem podjąć, aby to działało:

  1. Początkowo nie miałem zainstalowanej Java na moim nowym komputerze. Musiałem więc to zainstalować (pobrane z: http://java.com/en/download/manual.jsp ).
  2. Korzystam z 64-bitowego systemu operacyjnego. Ale podczas pobierania dostałem wiadomość, która może mi pomóc w wyborze wersji Java do pobrania: Choose the 32-bit download to use with a 32-bit browser.Dlatego pobrałem wersję 32-bitową.
  3. Następnie postąpiłem zgodnie z procedurą opisaną w https://stackoverflow.com/a/14464653/801919 , mając nadzieję na znalezienie rozwiązania.
  4. Mam inny błąd: Java was started but returned exit code=13
  5. Następnie zainstalowałem 64-bitową wersję Java.
  6. Skopiowano javaw.exez tej wersji.

... I Eclipse zaczął działać !!! بله


1

Cóż, ta odpowiedź jest dla tych, którzy próbowali wszystkich innych, ale nadal nie mają szczęścia, niech to będzie studio Android lub Eclipsezwykle robię to, gdy wszystko inne zawiedzie.

  1. Znajdź folder SDK Androida i otwórz plik android.bat za pomocą edytora tekstu
  2. na początku pliku znajdziesz kilka takich poleceń,

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF

  1. Zmień je na

    set java_exe=< ścieżka do pliku java.exe (można go znaleźć w folderze / bin katalogu jdk) >

  2. znajdź linie

rem Set SWT.Jar path based on current architecture (x86 or x86_64) for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

  1. Zamień go na set swt_path=< ścieżkę do odpowiedniego pliku swt.jar, dla x86 jest on w sdk \ tools \ lib \ x86, a dla x64 w sdk \ tools \ lib \ x86_64 >
  2. Zapisz i zamknij plik, a teraz możesz zacząć ...

1

Spróbuj ustawić JAVA_HOME na właściwy folder. Google do ustawiania zmiennych środowiskowych w systemie Windows.


Postępowałem zgodnie z tymi instrukcjami: wso2.org/project/wsas/java/2.0-beta/docs/setting-java-home.html ale bezskutecznie
Wallter

Nienawidzę tego mówić ... ale zrestartowałeś się?
Topher Fangio

Ponowne uruchomienie nie jest konieczne, aby zainstalować Javę.
Thorbjørn Ravn Andersen

1
JAVA_HOME nie jest konieczne. Jest to ŚCIEŻKA, która służy do znalezienia pliku javaw.exe. (JAVA_HOME jest używany przez niektóre inne aplikacje, takie jak mrówka, więc i tak nie jest źle ustawione)
user85421

1

Też natrafiłem na ten problem. Moja sprawa wygląda następująco:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

W tekście:

HKEY_CURRENT_USER\Environment
    Path    REG_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    JAVA_HOME    REG_SZ    C:\ProgramFiles\Java\jdk
    Path    REG_EXPAND_SZ    C:\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\
WindowsPowerShell\v1.0\;C:\Program Files\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Progra
m Files (x86)\Perforce;C:\ProgramFiles\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\
Git\cmd;C:\Program Files (x86)\Skype\Phone\

C:\Users\ssfang> echo %^JAVA_HOME% = "%^JAVA_HOME%" = %%JAVA_HOME%% %JAVA_HOME%
%JAVA_HOME% = "%^JAVA_HOME%" = %C:\ProgramFiles\Java\jdk% C:\ProgramFiles\Java\jdk

Stwierdziłem, że ich typy wartości rejestru Pathsą różne, więc sprawdziłem, czy ścieżka jest poprawna, wykonując następujące polecenie:

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

W rezultacie zresetowałem środowisko lokalne (bieżący użytkownik), wykonując następujące polecenia ( Setx ):

C:\Users\ssfang> setx PATH %^JAVA_HOME%\bin;"C:\ProgramFiles\nodejs"

SUCCESS: Specified value was saved.

C:\Users\ssfang> reg query HKEY_CURRENT_USER\Environment /v Path

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

C:\Users\ssfang>echo %PATH%
C:\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Fi
les\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Perforce;C:\ProgramFile
s\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\Git\cmd;C:\Program Files (x86)\Skype\
Phone\;%JAVA_HOME%\bin;C:\ProgramFiles\nodejs

Ale w bieżącym procesie nie może propagować tych zmian do innych uruchomionych procesów.

Jeśli jednak bezpośrednio zmodyfikujesz zmienne środowiskowe użytkownika w Edytorze rejestru,

te modyfikacje zmiennych środowiskowych nie powodują natychmiastowych zmian. Na przykład jeśli po wprowadzeniu zmian uruchomisz inny wiersz polecenia, zmienne środowiskowe będą odzwierciedlać poprzednie (nie bieżące) wartości. Zmiany zaczną obowiązywać dopiero po wylogowaniu, a następnie ponownym zalogowaniu.

Aby wprowadzić te zmiany bez konieczności wylogowywania, wyślij komunikat WM_SETTINGCHANGE do wszystkich okien w systemie, aby wszystkie zainteresowane aplikacje (takie jak Eksplorator Windows, Menedżer programów, Menedżer zadań, Panel sterowania itp.) Mogły przeprowadzić aktualizację.

Zobacz szczegółowe informacje na temat propagowania zmiennych środowiskowych do systemu

Tutaj daję skrypt PowerShell, aby to zrobić:

# powershell -ExecutionPolicy ByPass -File
# Standard, inline approach: (i.e. behaviour you'd get when using & in Linux)
# START /B CMD /C CALL "foo.bat" [args [...]]
# powershell -ExecutionPolicy ByPass -WindowStyle Hidden -File myScript.ps1 


<#
Add-Type @'

public class CSharp
{
    public static void Method(object[] first, object[] second)
    {
        System.Console.WriteLine("Hello world");
    }
}
'@
$a = 1..4;
[string[]]$b = "a","b","c","d";
[CSharp]::Method($a, $b);
#>


<#

#http://stackoverflow.com/questions/16552801/how-do-i-conditionally-add-a-class-with-add-type-typedefinition-if-it-isnt-add

#Problem Add-Type : Cannot add type. The type name 'PInvoke.User32' already exists.

if (-not ("MyClass" -as [type])) {
    add-type @"
    public class MyClass { }
"@
}


p.s. there's no Remove-Type; see this answer for more on how to best work around this limitation:
http://stackoverflow.com/questions/3369662/can-you-remove-an-add-ed-type-in-powershell-again

I think it will be wanted when debugging.
It is much simpler to close a tab in Console and open new one in PowerShell_ISE.exe or close PowerShell.exe.

Or

Start-Job -ScriptBlock {
    param([uri]$url,$OutputDir)
    # download and save pages
    Invoke-RestMethod $url | Out-File "$OutputDir\$($url.Segments[-1])" -Force
} -ArgumentList $link,$OutputDir

#>
if (-not ([System.Management.Automation.PSTypeName]'PInvoke.Program').Type)
{
    $sig=@"
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;

// The global namespace is the "root" namespace: global::system will always refer to the .NET Framework namespace System.

///P/Invoke (Platform Invoke)
namespace PInvoke
{
    public static class User32
    {
        /// http://www.pinvoke.net/default.aspx/Constants/HWND.html
        // public const IntPtr HWND_BROADCAST = new IntPtr(0xffff);
        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms725497(v=vs.85).aspx
        /// http://www.pinvoke.net/default.aspx/Constants/WM.html
        public const UInt32 WM_SETTINGCHANGE = 0x001A;

        // SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,    (LPARAM) "Environment", SMTO_ABORTIFHUNG,    5000, &dwReturnValue);

        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952(v=vs.85).aspx
        /// If the function succeeds, the return value is nonzero. 
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true)]
        public static extern uint SendMessageTimeout(IntPtr hWnd, uint Msg, int wParam, string lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, out int lpdwResult);
    }

    [Flags]
    public enum SendMessageTimeoutFlags : uint
    {
        SMTO_NORMAL = 0x0,
        SMTO_BLOCK = 0x1,
        SMTO_ABORTIFHUNG = 0x2,
        SMTO_NOTIMEOUTIFNOTHUNG = 0x8,
        SMTO_ERRORONEXIT = 0x20
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            //int innerPinvokeResult;
            //uint pinvokeResult = User32.SendMessageTimeout(User32.HWND_BROADCAST, User32.WM_SETTINGCHANGE, 0, "Environment", SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out innerPinvokeResult);
            Console.WriteLine("Over!!!!!!!!!!!!!!!!!!!!!!!!!");
        }
    }
}
"@

    Add-Type -TypeDefinition $sig
}


## [PInvoke.Program]::Main([IntPtr]::Zero);

$innerPinvokeResult=[int]0
[PInvoke.User32]::SendMessageTimeout([IntPtr]0xffff, [PInvoke.User32]::WM_SETTINGCHANGE, 0, "Environment", [PInvoke.SendMessageTimeoutFlags]::SMTO_NORMAL, 1000, [ref]$innerPinvokeResult);

Setx setx [/ s [/ u [] [/ p []]]] [/ m]

/m Specifies to set the variable in the system environment. The default setting is the local environment

0

Sprawdź okno> Preferencje> Java> Zainstalowane środowiska JRE. Upewnij się, że coś tam jest; jeśli nie, dodaj jeden.

Czy ostatnio aktualizowałeś swój JDK?


Tak, próbowałem dodać dodatek do Androida. Ale nie (jak powiedział Topher Fangio), nie mogę teraz uruchomić Eclipse.
Wallter

0

JDK nie instaluje JVM w domyślnej ścieżce.

O ile nie potrzebujesz zewnętrznych narzędzi do działania jak mrówka, to środowisko inne niż JDK wystarcza do uruchomienia Eclipse. Najłatwiejszym sposobem zainstalowania takiej maszyny JVM jest przejście na stronę http://java.com i zezwolenie na zainstalowanie tego, co chce zainstalować.

Następnie ponownie kliknij dwukrotnie plik binarny Eclipse.


Ponownie go zainstalowałem (nawet zapytałem, czy chcę go ponownie zainstalować) bezskutecznie. (Zrobiłem zarówno wtyczkę Google Chrome 14 - lub coś takiego, jak i & Firefox)
Wallter

Poszedłeś na java.com? Nie javasoft.com?
Thorbjørn Ravn Andersen

0

ustaw zmienną JAVA_HOME i ad JAVA_HOME / bin na zmienną ścieżki ewolucji.


jak to: „C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin”? - to wciąż nie działało :)
Wallter

Odwołanie do JAVA_HOME w zmiennej path wymaga jej osadzenia:% JAVA_HOME% \ bin
Heri

Dla mnie (Windows 10 64-bitowy + Eclipse 4.10) sztuczka polegała na dodaniu, oprócz JAVA_HOMEzmiennej środowiskowej, JRE_HOMEzmiennej, która została ustawiona na lokalizację javaw.exelokalizacji (która prawdopodobnie jest zawsze folderem bin JDK, który jest zainstalowany ).
Guy Avraham,

0

Miałem ten sam problem (Windows 7 x64, 64-bitowy JDK, 32-bitowy Eclipse) i znalazłem 2 rozwiązania:

  • Zainstaluj 64-bitową wersję Eclipse (można ją znaleźć, klikając kartę „Kompilacje programistyczne” na stronie pobierania).
  • Zainstaluj 32-bitową wersję JDK.

Widzisz, ale korzystałeś z systemu Windows 7 x86, na którym korzystałem z x64 --- jak inni stwierdzili, że ten problem mógł być problemem ze strony SUN w ich programowaniu tego, jak ich strona internetowa „wykrywa wersję” (tj. X64 lub x86) należy użyć
Wallter

Korekta, korzystałem z systemu Windows 7 x64
Tim

0

Miałem ten sam problem. Łatwym sposobem, aby to naprawić, było zainstalowanie zarówno środowiska JRE, jak i zaćmienia jako x86 lub x64. Gdy ich typ bitowy nie pasował, zaćmienie nie mogło go znaleźć. Tak więc, jeśli odinstalowanie i ponowne zainstalowanie nie jest dla ciebie wielkim problemem, zrobiłbym to.

Skończyło się instalowanie: Java Runtime Environment 1.7.0.3 (64-bit) i Eclipse Indigo (3.7) (64-bit)

To po prostu działa.


0

Kiedy skopiowałem tylko javaw, wystąpił drugi błąd, nie ma pliku java.dll, gdy go też skopiowałem, zaćmienie się nie rozpoczęło, zrobiłem to, że skopiowałem cały folder jdk do folderu eclipse i zmieniłem nazwę id na jre. Problem rozwiązany.

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.