Error: Registry key ‘Software\JavaSoft\Java Runtime Environment’\CurrentVersion’ …

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.7', but '1.8' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

레지스트리에 CurrentVersion은 1.7이지만, 실제로는 1.8이 필요하다라고 써있다. 보통 JDK를 설치/삭제 할때 저 값이 알맞게 업데이트 되지만 어떤 이유로 올바르게 적혀있지 않다는 것인데, 이를 해결하는 방법은 여기 에 적혀있다.

링크누르기 귀찮은 사람을 위해 정리하자면, 레지스트리에 가서 값을 고치는 방법을 통해 직접 시도할 수도 있지만, JDK를 설치(이미 설치되어 있다면, 삭제 후 설치)하는 방법이 제일 확실하다는 거다.

나 같은 경우는, 1.8을쓰다가 1.7로 다운그레이드하고자 1.8을 삭제했기 때문에 레지스트리의 CurrentVersion을 1.8로 올리는 방법은 적당하지 않았다. JDK7을 재설치하는 것으로 깔끔하게 해결되었다.

링크

맥에서 인텔리제이를 위한 JDK 설정

오라클 사에서는 맥을 위한 JDK도 지원한다. JDK8까지 지원하고 다운받아서 설치만 하면 기본 JDK 정보도 바꿔준다. 설정이 잘 되었는지 확인하고 싶다면 터미널에서 java나 javac의 버전을 확인해보거나, 오라클에서 제공하는 테스트 페이지에서 시험해보면 된다.

그런데, 인텔리제이는 최신버전(현재 14)설치해도 아래와 같은 메시지를 보이면서 Apple 사의 JDK 6(현재 최신)를 설치하라고 한다.

Screen Shot 2014-11-09 at 23.53.02

JDK 설정을 찾지못해서 보여주는 일종의 버그라고 생각했는데 아니었다. 인텔리제이 사의 서포트 페이지를 보면 그 이유가 열거되어 있다. 간단히 요약하면, 오라클 사의 맥용 JDK가 맥에서 동작할 때 버그가 있어서 여전히 애플 사의 JDK 6를 사용한다는 것이다.

그러니, 인텔리제이를 구동하기 위해서라면 윈도우 셋팅하듯 최신 버전 JDK 설치하지 말고, 애플의 JDK 6를 사용하자.

참고로, 위의 설정은 인텔리제이를 위한 JDK 설정으로 인텔리제이를 실행한 후에는 JDK를 추가할 수 있다. 이 때, 오라클 사의 JDK를 추가해서 프로젝트에 사용할 수 있다.

Screen Shot 2014-11-10 at 01.01.46

그 밖에

스택오버플로우에 보면 인텔리제이를 JDK 7에서 동작시키는 방법들이 나와있지만, 보통은 애플의 JDK를 사용하길 권장하고 있다.

인텔리제이 베타판 중에 JDK 최신(현재 8)을 포함해 배포하고 있는 버전이 있는 걸 보면, 애플이 JDK 버전을 올려주지 않아도 결국은 최신버전을 사용할 수 있게 될 것 같다.

 

참조

윈도우에서 JDK를 어디에 설치해야 할까?

공개된 소스나 개발 튜토리얼들을 보면 맥에서 개발하는 개발자들이 많다. ‘훌륭한 개발자들은 모두 맥에서 개발하는건가’하는 생각이 들기도 한다.

여전히 인터넷과 게임을 할때 가장 좋지만 윈도우도 개발하기에 훌륭한 운영체제이다. 그리고 운영체제는 개인의 취향보다 프로젝트 환경에 따라 선택하는 경우가 더 많다. 물론 불편을 감수하고 선택하기도 하지만.

이 윈도우에서 개발, 특히 자바를 입문하는 개발자라면 JDK를 어디에 설치해야 좋은지 고민해보았을 것이다. 결론만 정리해보자.

경로를 바꾸어 이상한 문제가 발생할까봐 부담스러운 입문자는 역시 기본 경로가 좋다. 그래야, 에러를 만나 이에 대해 주변에 도움을 요청할 때 기본값으로 설정했다고 말하면 문제를 해결하기 쉬워진다. 전에는 윈도우에서 기본 경로로 설치 했을 때 운영체제, 언어, 버전에 따라 문제가 있기도 했지만 모두 옛말이다.  자바 웹 어플리케이션 책의 첫장에 늘 있던 path를 추가하는 것도 요즘은 자동¹으로 된다.  그리고, 새 버전을 추가로 설치하면, path가 새버전으로 바뀐다². 보통 기본 경로는 아래와 같다.

C:\Program Files (x86)\Java\jdk1.7.0_55
C:\Program Files\Java\jdk1.7.0_55

단, 커맨드 라인 작업이나 스크립트에서 JDK를 이용할 생각이라면 기본 경로가 불편할 수 있다. 위와 경로들에는 공백과 괄호가 들어있어, 명령창이나 스크립트에서는 특수문자 처리를 해줘야하기 때문이다. 이 경우를 제외하고 IDE나 GUI기반 툴을 사용할 때에는 문제되는 경우를 최근 본적이 없다.

그래도 개발자라면 커맨드라인 툴도 쓰고 할텐데 경로를 짧게 바꿔야 하는 것 아닌가 싶다. 그럼 바꾸기 전에 JDK를 설치할 때 함께 설치되는 JRE를 살펴보자. JRE는 Java Runtime Environment의 약자로 모든 자바 어플리케이션이 참조하게 된다. 그리고, JDK는 버전마다 폴더가 달라져 이전 버전과 새 버전이 같이 유지되지만, JRE는 새 버전이 이전 버전과 같은 폴더에 설치된다. 새 버전이 이전 버전을 업데이트 하는 것이다³.

그래서 내 생각에는 JDK는 공백이나 특수 문자가 포함되지 않은 짧은 경로에 설치하여 접근과 사용이 쉽게 하고, JRE는 기본 경로에 설치하는게 옳다고 생각한다.

이를 감안해 내가 JDK를  설치할 때 애용하는 경로는 기본 경로에서 “Program files”라는 부분만 제거한 것이다. 예를 들면 아래와 같다.

C:\Java\jdk1.7.0_55

그리고, JRE는 아래 처럼 기본 경로 그대로 둔다. 그럼, 새 버전을 설치할 때마다 이전 버전은 삭제되고, 새버전으로 갈끔하게 설치될 것이다.

jre_path

 

¹ JDK 6에서는 설치를 완료하면 어느 경로에서나 JRE의 java 명령어를 실행할 수 있다.

²JDK 6을 설치한 후, JDK 7을 설치하면 JRE/bin의 path가 7로 바뀐다.

³ JDK 7 update 45를 설치 후, JDK 7 update 55를 설치하면 기존의 JRE를 폴더 채 지운 후에 JRE가 재 설치된다.