Eclipse-Java 없음 (JRE) / (JDK)… 가상 머신 없음


278

Eclipse v3.5 (Galileo)를 컴퓨터에서 다시 실행하려고합니다. 문제없이 이전에 실행했지만 이제이 오류가 계속 발생합니다.

Eclipse를 실행하려면 JRE (Java Runtime Environment) 또는 JDK (Java Development Kit)를 사용할 수 있어야합니다. 다음 위치를 검색 한 후 Java 가상 머신을 찾을 수 없습니다. 현재 PATH에서 C : \ eclipse \ jre \ javaw.exe javaw.exe

방금 JDK와 SDK를 새로 설치했습니다.

Windows 7 (x64)이 있습니다.

이게 뭐야? 어떻게 고치나요?

ipconfig / tracert / 또는 ping을 실행할 수 없습니다.


3
Java Runtime EnvironmentJRE는 SDK가 아닙니다 ...
user85421

1
JRE를 설치하십시오-경로에 javaw.exe가 제공됩니다. JDK는 그렇지 않습니다.
Thorbjørn Ravn Andersen 2016 년

12
@Carlos, 각 JDK는 개인 JRE를 제공합니다.
Thorbjørn Ravn Andersen 2016 년

3
@ Thorbjørn : 그리고 요점이 무엇입니까? 나는 또한 JDK가 공개 JRE를 제공한다는 것을 알고 있습니다. "Java Runtime Environment는 SDK가 아닙니다"라고 썼지 만, 쓴지 이해하려면 원래 게시물 (1 월 11 일에 편집하기 전에)을 읽어야합니다 . "Java Runtime Environment ( SDK ) 또는 ..."
user85421

11
Eclipse를 설치 한 후 최근에 다른 경로에 JDK를 설치 한 경우이 문제가 발생할 수 있습니다. eclipse는 처음 설정 될 때 eclipse.ini에서 JDK 경로를 하드 코딩하기 때문입니다. eclipse.ini에서 올바른 JDK 경로를 변경하십시오. 이 오류를 해결해야합니다.
Rajaraman 2013

답변:


221

Eclipse는 기본적으로 기본 " java.exe"(으로 처음 참조 된 PATH) 으로 시작하려고합니다.

기억해야 할 세 가지 :

  • JRE 또는 JDK를 "설치"하는 것은 다른 컴퓨터에서 압축을 풀거나 복사하는 것만 큼 간단 할 수 있습니다. 특별한 설치 단계가 없으며 원하는 다른 JVM 버전 (1.4, 5.0, 6.0 ...)을 가질 수 있습니다 디스크의 거의 모든 위치에 "설치"(복사)됩니다.
  • 항상 최신 JRE로 최신 Eclipse를 실행하는 것이 좋습니다 ( 최신 핫스팟 진화의 이점을 누리 려면 ). 당신은 할 수 있습니다 :
  • Eclipse 세션 내에서 참조 할 JVM이 다음과 같은 이유로 Eclipse 실행에 항상 사용되는 것은 아닙니다 .
    • Eclipse를 시작하려면 JRE 만 있으면되지만 일단 Eclipse가 시작되면 프로젝트 (특히 Java 소스 및 디버깅 목적, 컴파일 이론이지만 Eclipse에는 자체 Java 컴파일러가 있음)에 JDK를 등록해야합니다. 프로그램 을 실행 하기에 충분하기 때문에 Eclipse 내의 JRE 이지만 JDK는 더 많은 작업을 허용합니다.
    • Eclipse에 기본 등록 된 Java가 세션을 시작하는 데 사용되는 Java이지만 Sun이 아닌 것을 포함하여 이전 SDK를 등록하여 JRE로 프로그램을 실행 / 디버그 할 수 있습니다. 실제로 생산에 사용됩니다.

설치된 JRE


jmbertucci는 다음 과 같이 말합니다.

Windows 7 64 비트를 실행 중이고 32 비트 JRE가 설치되어 있습니다. 64 비트 JRE를 찾는 Eclipse 64 비트를 다운로드했습니다. 64 비트 JRE가 없었기 때문에 오류가 발생했습니다.

Java 수동 설치 페이지 (원하는대로 직접 액세스 할 수 없었습니다)로 이동하여 64 비트 버전을 설치했습니다. " 모든 운영 체제 용 Java 다운로드 "를 참조하십시오 . 그게 내가 필요한 전부 였어


2016 년 4 월 : Steve Mayne 이 댓글에 추가합니다 .

eclipse.ini올바른 Java 경로를 참조 하도록 파일 을 편집해야 PATH했습니다 eclipse.ini.에 값이있을 때 Eclipse가 환경 을 전혀 사용하지 않습니다 .


42
이 질문 / 답변이 약간 오래되었지만이 문제가 발생하여 메모를 게시하겠습니다. Win7 64 비트를 실행 중이며 32 비트 JRE가 설치되어 있습니다. 64 비트 JRE를 찾는 Eclipse 64bit를 다운로드했습니다. 64 비트 JRE가 없기 때문에 오류가 발생했습니다. Java 수동 설치 페이지 (원하는대로 직접 액세스 할 수 없음)로 이동하여 64 비트 버전을 설치했습니다. java.com/en/download/manual.jsp 그게 내가 필요한 전부였습니다.
jmbertucci

2
@ Nutu : 답변에 jmbertucci의 의견을 추가했습니다
VonC

@jmbertucci : 메모 해 주셔서 감사합니다. 더 많은 가시성을 위해 답변에 추가했습니다.
VonC

2
@VonC 올바른 java 경로를 참조하기 위해 eclipse.ini 파일을 편집해야했습니다. eclipse.ini에 값이있을 때 Eclipse는 환경 PATH를 전혀 사용하지 않습니다.
Steve Mayne

1
@SteveMayne 재미있는, 감사합니다. 더 많은 가시성을 위해 답변에 귀하의 의견을 포함 시켰습니다.
VonC

141

이 파일을 복사하십시오.

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

이클립스 폴더로

* 참고는 Windows에서만 테스트되었습니다.

Eclipse 폴더에서 javaw.exe 교체


이 답변으로 간단한 해결책을 찾고 있었지만 누군가 비슷한 상황이있는 경우 eclipse.ini 파일에서 vm 디렉토리를 변경하면 도움이 될 수 있습니다.
노하 카림

3
나를 위해 작동하지 않아 오류가 발생했습니다 : 레지스트리 키 'Software \ Javasoft \ Java Runtime Environment'를 여는 중입니다. 전체 jre7 (내 경우) 폴더를 Eclipse 디렉토리에 복사하고 jre로 이름을 바꾸어야했습니다. 그런 다음 효과가있었습니다.
CuriousMarc

누군가 실패한 경우 jre 폴더를 eclipse 폴더로 복사하십시오.
Arthur Zhixin Liu

@NohaKareem 당신의 조언은 저에게 가장 가깝습니다. 불행히도 내 'jre'폴더에는 'lib'만 포함되어 있으므로 Java 'jdk'폴더를 복사 (350MB는 크지 만 내부 'bin'폴더가 있음)로 복사하고 이름을 'jre'로 바꾸십시오. 감사.
Mindsect 팀

32 비트와 64 비트 Java가 설치되어 있지만 32 비트 Java가 경로에 있으면 64 비트 이클립스를 열려고 시도하면 64 비트 javaw 파일을 제외 옆에두면 작동합니다.
DiamondDrake

83

설정에 대한 모든 다른 답변 만을 (가) JAVA_HOME완전히 잘되지 않습니다. Eclipse는 즉, 문의 하지 않습니다JAVA_HOME . 오류 메시지를 자세히 살펴보십시오.

... 현재 PATH에

문자 그대로 PATH하지 않았다 JAVA_HOME.

내 컴퓨터를 마우스 오른쪽 버튼으로 클릭 하고 속성을 선택 하거나 Winkey+ Pause를 누르고 고급 탭으로 이동하여 환경 변수 버튼을 클릭 하고 맨 아래 의 시스템 변수 목록에서 Path(아니요, 아님 Classpath )를 클릭 한 다음 편집을 클릭 ;c:\path\to\jdk\bin하고 값의 끝에 추가 하십시오 .

또는 존재하지 않는 경우 JAVA_HOME환경 변수를 추가 하고에서 사용할 수도 있습니다 PATH. 동일한 대화 상자에서 새로 작성을 클릭 JAVA_HOME하고 값을 추가 하십시오 c:\path\to\jdk. 그런 다음 설정 ;%JAVA_HOME%\bin값의 끝에 추가 할 수 있습니다 Path.


2
작동하지 않습니다 :) 환경 이름의 데이터 : 경로 --- 값 : C : \ Program Files (x86) \ Java; C : \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin
Wallter

1
공백이있는 경로는 따옴표로 묶어야합니다.
BalusC

내 경로는 이전에 완벽하게 구성되었으며, Borland 컴파일러는 경로 필드를 편집하고 Java 경로를 자체 경로로 대체했습니다.
Akhil Jain

1
@BalusC 실제로 Windows에서 PATH 환경 변수를 구성 할 때 경로를 따옴표로 묶을 필요가 없습니다 . 세미콜론 ( ;)으로 구분하면 충분합니다.
informatik01

이것이 그것을 해결하는 답입니다. 몇 시간 동안 같은 문제가있는 사람들에게 파헤쳐 서 필요한 것은 다음과 같습니다. 1) 모든 것이 64 비트인지 확인하십시오. "프로그램 파일 (x86)"이 아닌 "프로그램 파일"에 자동으로 설치해야합니다. 2) 다른 답변이있는 bin 폴더에 -VM을 씁니다. 3)이 사람이 말한대로 길을 정하십시오. 명령 행에서 java를 실행할 수 없으면 아무 일도 일어나지 않습니다. 4) 기뻐
triplebig

36

제어판에서 Windows 시스템 속성을 열고 환경 변수 섹션을 찾으십시오.

  • JDK가 설치된 디렉토리를 가리키는 JAVA_HOME 항목을 추가하십시오 (예 : C : \ Program Files \ Java \ jre6).
  • 경로 항목을 찾아서 다음에 추가하십시오.; % JAVA_HOME % \ bin
  • 확인 변경
  • 새로운 환경을 인식하도록 Eclipse를 다시 시작하십시오.

대부분의 Java 도구는 이제 JAVA_HOME 환경 변수를 사용하거나 경로 환경 변수에서 java.exe / javaw.exe를 찾아 Java 설치를 찾을 수 있습니다.


3
name : JAVA_HOME 값을 추가해도 "C : \ Program Files (x86) \ Java \ jdk1.6.0_14; % JAVA_HOME % \ bin"같은 오류가 발생합니다
Wallter

24

64 비트 버전의 Eclipse를 다운로드 한 경우 64 비트 버전의 JRE를 찾습니다. 32 비트 버전의 Eclipse를 다운로드하는 경우 JRE의 32 비트 버전을 찾습니다.

내가 한 것은 32 및 64 비트 버전의 JRE를 모두 설치하는 것이 었습니다. SUN Oracle 사이트에서 얻을 수 있습니다. JAVA 사이트가 32 비트 버전의 Java를 자동으로 설치하는 것 같습니다. 웹 브라우저 때문인 것 같습니다.


2
ladookie가 말했듯이, 문제는 브라우저가 Java 웹 사이트에서 잘못된 코드를 실행하고 잘못된 버전의 JAVA를 얻는 것입니다 ...
Wallter

1
스피드 바론은 여기에 완전히 있습니다. 환경 변수 PATH를 수정하는 경우 올바른 버전의 경로를 지정하십시오. 내 Windows 7 64 비트 시스템에 32 비트 JRE가 설치되었으므로 (이유를 모르겠습니다) 64 비트 버전을 설치하고 새 디렉토리를 PATH에 추가했습니다. 지금은 잘 작동하는 것 같습니다.
musicliftsme

1
이것은 내 문제였다. Windows는 64 비트 C:\Program Files\Java및 32 비트를 설치합니다 C:\Program Files (x86)\Java.
styfle

10

내가해야 할 일은 '경로' 를 다음과 같이 변경하는 것입니다.

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

그랬어 :)


1
BTW, jdk1.6.0_16 이상을 사용해야합니다. jdk 1.6.0_14를 사용하면 Eclipse에서 중단 점을 올바르게 사용할 수 없습니다. bugs.eclipse.org/bugs/show_bug.cgi?id=279137
Csaba_H

9

Windows 7 64 비트가 있으며 이클립스와 동일한 문제가 있습니다. 작동 시키려면 Internet Explorer (64 비트 버전)를 사용하여 Java를 다운로드해야했습니다. 이것이 Java가 64 비트 버전을 설치하도록하는 유일한 방법이었습니다. 파이어 폭스를 사용하여 자바를 설치하면 자동으로 32 비트 버전 (이디 오틱!)이 설치되었습니다. 그리고 Eclipse 64 비트 버전은 Java 32 비트 버전을 감지하지 못합니다.


나는 더 이상 문제가 없다-그러나 이것은 좋은 해결책처럼 보이고 말이된다-다른 64 비트 브라우저로 이것을 테스트하는 것은 흥미로울 것이다.
Wallter

7

간단히 말해서 솔루션 :

내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 고급 시스템 설정, 시스템 속성 창이 팝업되고 고급 탭에서 환경 변수 선택, 환경 변수 창이 팝업 됨, 시스템 변수 섹션 아래에서 변수를 찾고 PATH값을 편집하십시오. , 사용중인 jre로 변경하십시오 (예 : jre6, jre7 등).C:\Program Files\Java\jre7\bin


7

거의 모든 업데이트에서 Windows 경로 변수가 변경되므로 Windows 경로 변수에 의존하지 마십시오. 예를 들어 크롬 (64 비트 시스템에서 32 비트) java 업데이트는 시스템 전체 64 비트 JVM을 32 비트 JVM으로 대체합니다. 또한이 항목은 eclipse.ini에서 마지막 항목이어야합니다. 그렇지 않으면 작동하지 않습니다. 달리 명시한대로 JAVA_HOME 변수는 eclipse.exe에 의해 평가되지 않습니다.

JAVA_HOME과 경로가 유효하게 구성되어 있더라도이 문제가있을 수 있으므로 가장 간단한 방법은 eclipse 설치 폴더에서 eclipse.ini를 여는 것입니다

-vm

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

C : \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe를 jdk 또는 jre의 경로로 바꾸십시오.


이 답변이 올바른 답변이라고 투표합니다. 거의 모든 업데이트에서 Windows 경로 변수가 변경되므로 Windows 경로 변수에 의존하지 마십시오. 예를 들어 크롬 (64 비트 시스템에서 32 비트) java 업데이트는 시스템 전체 64 비트 JVM을 32 비트 JVM으로 대체합니다. 이 항목은 eclipse.ini에서 마지막 항목이어야하며 그렇지 않으면 작동하지 않습니다. 달리 명시한대로 JAVA_HOME 변수는 eclipse.exe에 의해 평가되지 않습니다. 그에 따라 답변을 수정하십시오.
Heri

실제 문제를 직접 해결하기 때문에 이것이 가장 좋은 대답입니다. 이클립스는 특정 매개 변수 당 경로를 찾고 있는데 그 값이 잘못되었습니다. 값을 수정하면 문제가 해결됩니다.
BuvinJ 2019

6

당신의에서 eclipse.ini파일, 같은 위치를 가리 키도록 VM의 경로를 업데이트 할 필요가 javaw.exe컴퓨터에 설치되어 있습니다.


6

걱정하지 마십시오.이 오류로 인해 치명적이며 치명적입니다. 내가 안드로이드 프로그래밍을 떠나는 것이 너무 실망 스럽지만 알았습니다. 우선이 코드를 복사하여 시스템 변수에 붙여 넣으십시오. 경로에서 ...

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

이제이 경로 아래에 "jre"가있는 것처럼 경로에서 "jre" 폴더 를 복사하십시오.

            C:\Program Files\Java

eclipse 폴더에 붙여 넣으면 eclipse.exe 파일이있는 위치를 의미합니다. 이 위치에 일식을 설정 한 것처럼

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

따라서 이클립스 폴더 안에 "jre"FOLDER를 붙여 넣으십시오. "jre6"이있는 경우 이름을 "jre"로 바꾸고 이클립스를 실행하면 솔루션을 얻게됩니다 ...

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

다른 솔루션 : 2

위 단계를 수행해도 문제가 해결되지 않으면 다음 단계를 수행하십시오

  1. C : \ Program Files \ Java \ jre6 * 등과 같은 Java 경로에서 "jre"폴더를 복사하여 이클립스 디렉토리에 붙여 넣기 (이클립스를 사용할 수있는 곳)
  2. eclipse.ini 파일로 이동하여여십시오.
  3. 다음과 같이 javaw.exe 파일의 디렉토리를 변경하십시오.

-vmF : \ Softwares \ LANGUAGES SOFTEARE \ Android 설정 \ eclipse Indigo 버전 32 Bit \ jre \ bin / javaw.exe

이제는 eclipse를 시작할 때 javaw.exe를 검색하므로 eclipse.ini에서 동일한 폴더에 있으므로 eclipse.ini의 경로를 검색하므로 javaw.exe가 시작되고 작동하기 시작합니다. .

여전히 문의 사항이 있으면 다시 요청할 수 있습니다. 내 프로필로 이동하여 내 이메일 ID를 찾으십시오. 스택 오버플로 포럼을 좋아하기 때문에 프로그래머가되었습니다. *


5

새로 업데이트 된 JDK를 업데이트하기 위해 eclipse.ini 파일을 편집했습니다. 이전에는 jdk1.7.0_09가 있었고 이제 jdk1.7.0_80으로 업데이트되었으며 이클립스 에서이 오류가 발생했습니다.

Eclipse를 실행하려면 JRE (Java Runtime Environment) 또는 JDK (Java Development Kit)를 사용할 수 있어야합니다. 다음 위치를 검색 한 후 Java 가상 머신을 찾을 수 없습니다. C : / Program Files / Java / jdk1.7.0_09 / bin / javaw

에서 eclipse.ini 를 업데이트 한 후

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

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

이클립스는 잘 작동합니다.


1
이것이 나를 위해 일한 솔루션입니다-Lucky. Eclipse는 ini 파일에서 참조 된 JRE를로드하므로 env PATH를 볼 때 허용되는 대답이 올바르지 않습니다.
Steve Mayne


3

환경 변수의 PATH 변수에 C : \ Program Files \ Java \ jdk1.8.0_92 \ bin을 추가 한 후 일식에서 동일한 오류가 발생하는 경우

eclipse 폴더에있는 Eclipse 구성 설정 파일을 확인하십시오. C : \ program Files에있는 것과 동일한 jdk 경로가 표시되어야합니다.

여기에 이미지 설명을 입력하십시오

도움이 되길 바랍니다.


2

그러한 문제가 발생했을 때, 제 경우에는 x86 Eclipse와 함께 x64 JDK + JRE가 설치되었습니다. 따라서 x86 JDK + JRE를 설치하면 내 문제가 해결 jre되었습니다.) 이클립스 폴더에 폴더를 만들고 bin로컬 경로에서로 폴더를 복사 C:\Program Files (x86)\Java\jre7했습니다 ..\eclipse\jre\.


2
  • 64 비트 OS-> 필요 : 64 비트 Java 및 64 비트 Eclipse
  • 32 비트 OS-> 필요 : 32 비트 Java 및 32 비트 Eclipse

64 비트 컴퓨터에서 기본 업데이트로 Java 버전을 업데이트하고 32 비트 브라우저가있는 경우 java는 32 비트 버전을 설치합니다. 64 비트 Java 버전을 찾아서 설치해야합니다.


1

나는 지난주 에이 정확한 문제를 가진 동료를 가졌습니다. 그는 x64 버전의 Eclipse와 x64 JDK를 설치하여 문제를 해결했습니다.

편집 : 그는 필요한 플러그인을 설치 한 후 이전 작업 공간을 재사용 했으므로 큰 문제는 아닙니다.


1

더 쉬운 방법이 있습니다. cmd x64를 실행하십시오. cmd x64를 시작 메뉴에 검색 표시 줄에 입력하십시오. 개미는 다음과 같습니다.


1

예 : C : \ Program Files \ Java \ jre5 \ bin에 대한 JRE 경로를 환경 변수 Put ";"에 추가하십시오. 모든 경로 사이에. 그런 다음 eclipse.exe를 클릭하십시오.


1

이 오류가 발생하는 이유는 Eclipse에서 JRE를 시작해야 찾을 수 없기 때문입니다. 검색하는 첫 번째 위치는 현재 디렉토리, eclipse.ini 파일 및 시스템 경로입니다. 따라서이 세 곳 중 하나를 통해 올바른 jvm (비트 버전이 다름)을 찾을 수 없으면 침대

권장되는 방법은 eclipse.ini 파일을 편집하고 파일에이 행을 포함시켜 eclipse에게 vm / jre를 정확히 찾을 위치를 알려주는 것입니다.

-vm
[java.exe의 경로] (일반적으로 "C : \ Program Files \ Java \ jre7 \ bin"에 있음)

PS eclipse.ini를 편집하려면 파일을 이동하고 편집 한 후 다시 붙여 넣어야합니다.

출처 :-위키


1

그의 솔루션에 대한 YouYou에게 감사합니다! 나는 YouYou ( https : //.com/a/14464653/801919 )의 답변을 시도했습니다 . 처음에는 저에게 효과적이지 않았습니다. 다음은 작동시키기 위해 수행해야 할 단계입니다.

  1. 처음에는 새 컴퓨터에 Java를 설치하지 않았습니다. 그래서 그것을 설치해야했습니다 ( http://java.com/en/download/manual.jsp 에서 다운로드 ).
  2. 64 비트 OS를 실행하고 있습니다. 그러나 다운로드하는 동안 다운로드 할 Java 버전을 선택하는 데 도움이되는 메시지가 나타납니다. Choose the 32-bit download to use with a 32-bit browser.따라서 32 비트 버전을 다운로드했습니다.
  3. 그런 다음 https://stackoverflow.com/a/14464653/801919에 언급 된 절차에 따라 솔루션을 얻었습니다.
  4. 다른 오류가 있습니다. Java was started but returned exit code=13
  5. 그런 다음 64 비트 버전의 Java를 설치했습니다.
  6. javaw.exe해당 버전에서 복사 했습니다.

... 그리고 이클립스가 작동하기 시작했습니다 !!! 예이!


1

글쎄,이 답변은 다른 사람들에게 여전히 운이없는 사람들에게 시도하는 것입니다 .Android 스튜디오 이거나 Eclipse다른 모든 것이 실패 할 때 일반적 으로이 작업을 수행 할 수 있습니다.

  1. Android SDK 폴더 를 찾고 텍스트 편집기로 android.bat 파일을여십시오.
  2. 파일 시작 부분에 이와 같은 명령이 있습니다.

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF

  1. 로 변경

    set java_exe=< java.exe 파일의 경로 (jdk 폴더 / bin 디렉토리에 있음) >

  2. 줄을 찾아

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. set swt_path=< 해당 swt.jar 파일의 경로, x86의 경우 sdk \ tools \ lib \ x86, x64의 경우 sdk \ tools \ lib \ x86_64로 설정하십시오. >
  2. 파일을 저장 한 후 닫으십시오. 이제 시작하십시오 ..

1

JAVA_HOME을 올바른 폴더로 설정하십시오. Windows에서 환경 변수를 설정하기위한 Google


나는 다음 지침을 따랐다 : wso2.org/project/wsas/java/2.0-beta/docs/setting-java-home.html 그러나 아무 소용이 없다
Wallter

나는 그것을 말하기 싫어 ...하지만 다시 시작 했습니까?
Topher Fangio

Java를 설치하기 위해 다시 시작할 필요는 없습니다.
Thorbjørn Ravn Andersen 님

1
JAVA_HOME도 필요하지 않습니다. javaw.exe를 찾는 데 사용되는 PATH입니다. (JAVA_HOME은 ant와 같은 다른 응용 프로그램에서 사용되므로 설정이 잘못되지 않습니다)
user85421

1

나는이 문제에 부딪쳤다. 내 경우는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

텍스트로 :

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

레지스트리 값의 유형 Path이 다르므로 다음 명령으로 경로가 유효한지 여부를 확인했습니다.

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

결과적으로 다음 명령 ( 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

그러나 현재 프로세스에서는 이러한 변경 사항을 다른 실행중인 프로세스에 전파 할 수 없습니다.

그러나 레지스트리 편집기에서 사용자 환경 변수를 직접 수정하면

환경 변수에 대한 수정 사항은 즉시 변경되지 않습니다. 예를 들어, 변경 후 다른 명령 프롬프트를 시작하면 환경 변수에 이전 (현재 아님) 값이 반영됩니다. 로그 오프했다가 다시 로그온 할 때까지 변경 사항이 적용되지 않습니다.

로그 오프하지 않고 이러한 변경 사항을 적용하려면 시스템의 모든 창에 WM_SETTINGCHANGE 메시지를 브로드 캐스트하여 Windows 탐색기, 프로그램 관리자, 작업 관리자, 제어판 등과 같은 관심있는 응용 프로그램이 업데이트를 수행 할 수 있도록하십시오.

환경 변수를 시스템에 전파하는 방법에 대한 세부 사항 참조

여기에 Powershell 스크립트를 제공합니다.

# 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

창> 환경 설정> Java> 설치된 JRE를 확인하십시오. 거기에 무언가가 있는지 확인하십시오. 없는 경우 추가하십시오.

최근에 JDK를 업데이트 했습니까?


예, 안드로이드 부가 기능을 추가하려고했습니다. 그러나 (Topher Fangio와 같이) 지금은 Eclipse를 시작할 수 없습니다.
Wallter

0

JDK는 기본 경로에 JVM을 설치하지 않습니다.

개미처럼 실행하기 위해 외부 도구가 필요하지 않은 경우 비 JDK는 Eclipse를 실행하기에 충분합니다. 이러한 JVM을 설치하는 가장 쉬운 방법은 http://java.com 으로 이동하여 설치하려는 모든 것을 설치하도록하는 것입니다.

그런 다음 Eclipse 바이너리를 다시 두 번 클릭하십시오.


아무 소용없이 다시 설치했습니다 (다시 설치해야하는지 묻습니다). (나는 구글 크롬 플러그인 14-또는 그와 같은 & & Firefox를 모두했다)
Wallter

java.com에 갔습니까? javasoft.com이 아니십니까?
Thorbjørn Ravn Andersen

0

JAVA_HOME 변수 및 ad JAVA_HOME / bin을 evnrionment 경로 변수로 설정하십시오.


"C : \ Program Files (x86) \ Java; C : \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin"? -그것은 여전히 ​​작동하지 않았다 :)
Wallter

경로 변수에서 JAVA_HOME을 참조하려면 다음을 포함해야합니다. % JAVA_HOME % \ bin
Heri

나를 위해 (Windows 10 64 비트 + Eclipse 4.10) 트릭은 JAVA_HOME환경 변수 외에도 JRE_HOME위치의 위치로 설정된 변수를 추가하는 것이 었습니다 javaw.exe(이는 항상 설치된 JDK의 bin 폴더 일 것입니다) ).
Guy Avraham

0

나는 같은 문제 (Windows 7 x64, 64bit JDK, 32bit Eclipse)를 가지고 있었고 두 가지 해결책을 찾았습니다.

  • 64 비트 버전의 Eclipse를 설치하십시오 (다운로드 페이지에서 "개발 빌드"탭을 클릭하여 찾으십시오).
  • JDK의 32 비트 버전을 설치하십시오.

참고하지만 당신은 내가 x64 를 사용하고있는 곳에서 Windows 7 x86 을 사용하고있었습니다 .- 다른 사람들이 말했듯 이이 문제는 웹 페이지가 '버전을 감지하는'방법 (예 : x64 또는 x86)을 프로그래밍하는 데 SUN의 일부 결함 일 수 있습니다. 사용
Wallter

수정, 나는 Windows 7 x64를 사용했다
Tim

0

나는 같은 문제가 있었다. 가장 쉬운 방법은 JRE와 일식을 x86 또는 x64로 설치하는 것이 었습니다. 비트 유형이 일치하지 않으면 일식에서 찾을 수 없습니다. 따라서 일치하도록하기 위해 제거하고 다시 설치하는 것이 큰 일이 아니라면 그렇게 할 것입니다.

Java Runtime Environment 1.7.0.3 (64 비트) 및 Eclipse Indigo (3.7) (64 비트)를 설치했습니다.

그런 다음 작동합니다.


0

javaw 만 복사하면 두 번째 오류가 발생하고 java.dll 파일이 없습니다 .java.dll 파일도 복사하지 않았을 때 이클립스가 시작되지 않았습니다. 전체 jdk 폴더를 이클립스 폴더에 복사하고 id를 jre로 이름을 바꿨습니다. 문제 해결됨.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.