ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • node exporter basic auth
  • 가상 스레드 예외 핸들링
  • jpa
  • AccessDecisionVoter 커스텀
  • restdocs custom
  • StructuredConcorrency
  • scope value
  • UserDetailsService
  • LocalDateTime
  • AuthenticationException
  • 인가(Authorization) 처리
  • FilterSecurityInterceptor
  • mysql
  • tree
  • java
  • 구조화된 동시성
  • 동등성
  • 트랜잭션
  • querydsl
  • 동시성 제어
  • nginx basic auth
  • 동일성
  • DataJpaTest
  • nGrinder
  • AccessDecisionManager
  • restdocs enum
  • VirtualThread Springboot
  • 가상 스레드
  • junit5
  • 정규표현식

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

테스트/nGrinder

nGrinder 에러 - Unsupported class file major version 61 해결방법

2023. 4. 25. 22:38

로컬 환경의 기본 JDK 버전은 17이였습니다.

  • m1 pro Ventura 13.0.1
  • JDK 17 (amazon corretto)

nGrinder로 groovy 스크립트를 작성하고 Validate를 실행했을 때 다음과 같은 오류를 만났습니다.

2023-04-25 21:57:47,218 ERROR Script error - Error while initialize test runner
net.grinder.engine.common.EngineException: Error while initialize test runner
    at net.grinder.scriptengine.groovy.GroovyScriptEngine.<init>(GroovyScriptEngine.java:71)
    at net.grinder.scriptengine.groovy.GroovyScriptEngineService.createScriptEngine(GroovyScriptEngineService.java:87)
    at net.grinder.engine.process.ScriptEngineContainer.getScriptEngine(ScriptEngineContainer.java:105)
    at net.grinder.engine.process.GrinderProcess.run(GrinderProcess.java:345)
    at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:87)
    at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:60)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: Unsupported class file major version 61

java.lang.IllegalArgumentException: Unsupported class file major version 61
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284)
    at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
    at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
    at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
    at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
    at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
    at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57)
    at org.codehaus.groovy.ast.decompiled.Annotations.createAnnotationNode(Annotations.java:40)
...

주요 에러 키워드를 보면 다음과 같습니다.

Unsupported class file major version 61

에러 코드를 검색해보니 해당 에러는 gradle과 jdk의 버전이 맞지 않아서 생기는 에러입니다

version 뒤의 숫자가 jdk버전에 따라 다르다고 하는데 61은 jdk 17과 호환되지 않는 문제입니다.

 

먼저 발생했던 시나리오를 다시 되짚기 위해 실행부터 확인하였습니다.

발생 시나리오

로컬 자바 버전

ysk 🌈 > java -version

openjdk version "17.0.5" 2022-10-18 LTS
OpenJDK Runtime Environment Corretto-17.0.5.8.1 (build 17.0.5+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.5.8.1 (build 17.0.5+8-LTS, mixed mode, sharing)

실행시 다음과 같은 명령어로 실행하였습니다

$ java -Djava.io.tmpdir=${NGRINDER_HOME}/lib -jar ngrinder-controller.war --port 7070

nGridner Web Admin 화면의 Script -> 기본 스크립트 - > Validate 진행

 

  • Unsupported class file major version 61 에러 발생 확인
  • 로컬은 자바17인데 ngrinder 기본 권장 사양은 자바 8 이였으므로 이것에 힌트를 얻어 고민하다 방법을 찾았습니다.

해결 방법

jdk 1.8을 다운로드 하고, 실행시 java home을 지정해 주면 됩니다

  • 실행 시 환경변수를 설정하는 것이기 때문에 전체 jdk가 변경되지는 않습니다!
  • 맥 m1 이기 때문에 azul을 다운로드 하였습니다.
  • azul 다운로드 사이트
    • Java 8 버전을 다운로드 하세요

 

자바 8버전을 설치하고 나면 다음과 같은 디렉토리에 저장이됩니다

  • 디렉토리는 컴퓨터마다 다를 수 있어요
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

 

다음 실행 명령어로 해결합니다

JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home Java -Djava.io.tmpdir=/Users/ysk/dev/ngrinder/lib -jar ngrinder-controller-3.5.8.war --port 7070
zsh: no such file or directory: -Djava.io.tmpdir=/Users/ysk/dev/ngrinder/lib
  • 위 명령에서 XXX 부분은 설치된 JDK 8 버전에 따라 다를 수 있습니다. 이후 ngrinder를 실행하면 설정한 JDK 8이 사용됩니다.

간단 설명

1. ngrinder 실행 명령어에 JDK 8 경로를 지정

nGrinder를 실행할 때 다음 명령어랑 같이 실행해주면 됩니다.

JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
  • 위 명령어는 JDK 8 환경 변수를 설정한것입니다.
  1. ngridner 실행 명령어
Java -Djava.io.tmpdir=/Users/ysk/dev/ngrinder/lib -jar ngrinder-controller-3.5.8.war --port 7070
zsh: no such file or directory: -Djava.io.tmpdir=/Users/ysk/dev/ngrinder/lib
  1. 결과

 

해결!

 

만약 agent를 이용한 테스트 스크립트 도 마찬가지로 발생한다면?

agent 실행시에도 입력해주세요~

JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home ./run_agent.sh
저작자표시 비영리 (새창열림)

'테스트 > nGrinder' 카테고리의 다른 글

nGridner 소개와 설치 방법, 간단 테스트  (1) 2023.04.25
    '테스트/nGrinder' 카테고리의 다른 글
    • nGridner 소개와 설치 방법, 간단 테스트
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바