본문 바로가기

Development/Java

[JAVA] "Could not create the Java Virtual Machine" 에러 수정 방법

728x90

 

 

 

Java 프로그램은 JVM(Java Virtual Machine) 에서 실행되므로 애플리케이션 서버에서 모바일 폰에 이르기까지 거의 모든 곳에서 실행할 수 있습니다. Java가 제대로 설치되면 문제 없이 애플리케이션을 실행할 수 있습니다. 그러나 가끔씩 "Could not create the Java Virtual Machine"와 같은 오류가 발생합니다.

이를 수정하는 방법에 대해서 살펴보겠습니다.

오류 이해

"Could not create the Java Virtual Machine" 오류는 Java가 프로그램이나 애플리케이션을 실행하기 위한 가상 머신(JVM)을 만들 수 없을 때 발생합니다.

이는 매우 일반적인 오류 메시지입니다. JVM이 생성에 실패하지만 실제 원인은 다른 것일 수 있으며 오류 메시지에는 생성되지 않는 이유가 명시되어 있지 않습니다.

이 오류를 어떻게 볼지는 오류를 생성한 실행 중인 Java 기반 애플리케이션에 따라 달라집니다. Eclipse, IntelliJ 등과 같은 Java 애플리케이션은 주요 오류 메시지만 표시할 수 있습니다.

그러나 터미널에서 실행하면 주요 메시지와 추가 정보가 생성됩니다.

  • Error occurred during initialization of VM(VM 초기화 중 오류가 발생했습니다.)
  • Could not reserve enough space for object heap(객체 힙에 충분한 공간을 예약할 수 없습니다.)
  • Unrecognized option: <options> etc.(인식할 수 없는 옵션: <옵션> 등)

오류를 재현해 보겠습니다. 먼저 간단한 HelloWorld 클래스를 만들어 보겠습니다 .

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

 

이 예에서는 -XX:MaxPermSize=3072m 옵션을 사용하여 Java 8에서 HelloWorld를 실행해 보겠습니다. 이것은 성공적으로 실행될 것입니다.

그러나 Java 17에서는 -XX:MaxPermSize 옵션이 제거되어 잘못된 옵션이 되었습니다. 따라서 이 옵션을 사용하여 Java 17에서 동일한 클래스를 실행하면 "Error: Could not create the Java Virtual Machine"라는 메시지와 함께 실패합니다.

주요 오류와 함께 시스템은 "Unrecognized VM option ‘MaxPermSize=3072m"이라는 특정 오류 메시지를 반환합니다.

$ java -XX:MaxPermSize=3072m /HelloWorld.java
Unrecognized VM option 'MaxPermSize=3072m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

 

이 문제를 해결하려면 유효하지 않은 옵션을 제거하고 유효한 대체 옵션이 있는 경우 대체해야 합니다.

가능한 원인

"Could not create the Java Virtual Machine"라는 오류가 표시되면 이는 Java 설치가 애플리케이션이 실행되는 JVM을 시작할 수 없음을 의미합니다.

여러 요인으로 인해 오류가 발생할 수 있습니다. 잘못된 Java 설치로 인해 이 오류가 발생할 수 있습니다. 다양한 가능성이 있습니다. 예를 들어 설치된 Java 버전이 실행하려는 응용 프로그램이나 프로그램과 호환되지 않으면 JVM이 생성되지 않을 수 있습니다. 또한 설치 디렉터리가 시스템의 PATH 환경 변수에 추가되지 않으면 자바가 식별되지 않아 이 오류가 발생할 수 있습니다.

또한 여러 Java 버전을 설치하면 문제가 발생하여 이 오류가 발생할 수 있습니다. 마지막으로 Java 업데이트가 중단되거나 손상된 경우 잘못된 설치가 발생할 수 있습니다.

어떤 경우에는 JVM에 프로그램을 실행하는 데 메모리가 충분하지 않을 수 있습니다. 기본적으로 Java는 초기 및 최대 힙 크기를 사용합니다. 따라서 애플리케이션이 최대 힙 크기를 초과하면 오류가 발생합니다. Java가 사용할 수 있는 시스템 메모리 양을 조정하여 이를 조정할 수 있습니다.

예제에서 본 것처럼 손상된 Java 파일이나 잘못된 JVM 설정으로 인해 JVM이 시작되지 않을 수도 있습니다.

다른 소프트웨어나 애플리케이션이 Java와 충돌하여 JVM이 시작되지 않고 이 오류가 발생할 수 있습니다.

또 다른 원인은 시스템에 적절한 관리자 액세스 권한이 부족하기 때문일 수 있습니다.

가능한 해결책

모든 시나리오에 대한 단일 수정 사항은 없습니다. 경우에 따라 다양한 문제 해결 접근 방식을 고려할 수 있습니다. 하지만 우리가 확인해야 할 몇 가지 기본 사항을 살펴보겠습니다.

Java 설치 확인

먼저 명령 프롬프트에서 java -version을 실행하여 Java가 올바르게 설치되었는지 확인해야 합니다.

% java -version
java 17.0.12 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)

 

또한 Java 설치 디렉터리가 시스템의 PATH 환경 변수에 나열되어 있는지 확인해야 합니다.

메모리 옵션 확인

다음 단계는 애플리케이션 메모리 조정 매개변수를 살펴보는 것입니다. Java 8까지는 애플리케이션 메모리 조정을 위해 -XX:PermSize, XX:MaxPermSize와 같은 많은 플래그가 있는 PermGen 메모리 공간이 있었습니다.

Java 8부터는 Metaspace 메모리 공간이 이전 PermGen 메모리 공간을 대체합니다. -XX:MetaspaceSize, -XX:MinMetaspaceFreeRatio 및 -XX:MaxMetaspaceFreeRatio를 포함하여 많은 새로운 Metaspace 플래그를 사용할 수 있습니다.

이러한 플래그는 애플리케이션 메모리 조정을 개선하는 데 사용할 수 있습니다. 이러한 개선으로 인해 JVM에서 OutOfMemory 오류가 발생할 가능성이 감소되었습니다.

권한 확인

또한 액세스/권한에 문제가 있는 경우 오류가 발생하는 경우도 있습니다.

  • java.io.FileNotFoundException: /path/to/file (Permission denied)
  • java.security.AccessControlException: access denied (“java.io.FilePermission” “/path/to/file” “read”)
  • java.lang.SecurityException: Unable to create temporary file. Etc.

이러한 문제를 해결하려면 관리자로 Java를 실행하거나 파일/디렉터리 권한을 수정해야 합니다. Windows를 사용하는 경우 터미널이나 IDE 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택합니다. Linux 및 Mac의 경우 sudo -i 또는 su를 사용하여 루트 사용자로 터미널을 엽니다.

Cleanup

때때로 시스템의 다른 Java 응용 프로그램이 우리 응용 프로그램과 충돌할 수 있습니다. 이를 식별한 다음 최근에 설치한 Java 관련 소프트웨어를 비활성화하거나 제거할 수 있습니다.

마지막으로 모든 것이 실패하면 Java를 처음부터 다시 설치해 볼 수 있습니다.

 

 


 

 

"Java

Could not create the Java Virtual Machine" 에러는 수많은 이유가 있지만 근본적으로 JVM(Java Virtual Machine)을 생성하는데 발생하는 에러로 java를 실행시 문제점이 무엇인지 찾아(위의 내용을 의심)보고 최후의 보루로 java를 재설치하는 것이 좋아 보입니다.

 

 

 

 

 

 

출처: https://www.baeldung.com/java-resolve-could-not-create-the-java-virtual-machine-error

728x90
반응형