ngrinder를 사용해서 간단한 스크립트를 생성 후 validate 테스트를 해보니 다음과 같은 에러를 얻었다. 구글링 해보니 JDK 버전이 11 or 8이 아니며 그 이상일 경우 발생하는 것으로 보인다. 

2025-09-21 12:55:11,242 ERROR Error running worker process
net.grinder.engine.common.EngineException: Setting of Local DNS provider failed
	at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:154)
	at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:78)
	at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:60)
Caused by: java.lang.ClassNotFoundException: sun.net.spi.nameservice.NameService
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:421)
	at java.base/java.lang.Class.forName(Class.java:412)
	at org.ngrinder.dns.NameServiceProxy.set(NameServiceProxy.java:59)
	at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:151)
	... 2 common frames omitted


2025-09-21 12:55:11,244 ERROR worker-bootstrap: Error initialising worker process
net.grinder.engine.common.EngineException: Setting of Local DNS provider failed
	at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:154)
	at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:78)
	at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:60)
Caused by: java.lang.ClassNotFoundException: sun.net.spi.nameservice.NameService
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:421)
	at java.base/java.lang.Class.forName(Class.java:412)
	at org.ngrinder.dns.NameServiceProxy.set(NameServiceProxy.java:59)
	at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:151)
	... 2 common frames omitted

 

터미널에서 확인해보니 자바 버전이 21로 설정 되어있었다. 

$ java --version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment Homebrew (build 21.0.2)
OpenJDK 64-Bit Server VM Homebrew (build 21.0.2, mixed mode, sharing)

 

자바 버전을 11 혹은 8로 변경하기 위해서 다음과 같은 명령어로 확인해보았다.

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    11.0.27 (x86_64) "Azul Systems, Inc." - "Zulu 11.80.21" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
    1.8.0_161 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

 

자바 11 버전으로 변경하기 위해서 다음과 같은 명령어를 사용했다. 다음 명령어를 통해서 일시적으로 jdk 버전을 변경 시킨다. 일시적이라고 하면 명령어를 실행시킨 커맨드 창을 종료하면 원래대로 돌아간다는 의미이다.

export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.27)
source ~/.bash_profile

 

다음 명령어를 통해서 영구적으로 자바 버전을 변경할 수 있다.

vim ~/.zshrc 실행 후 아래 내용을 삽입
export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.27)

하지만 나의 경우 이미 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)로 들어가있어서 이를 11.0.27 버전으로 수정했다.

다음 명령어를 수행해서 변경사항을 반영한다.

source ~/.zshrc

 

자바 버전을 확인해보니 다음과 같이 잘 변경된 것을 확인할 수 있었다.

$ java --version
openjdk 11.0.27 2025-04-15 LTS
OpenJDK Runtime Environment Zulu11.80+21-CA (build 11.0.27+6-LTS)
OpenJDK 64-Bit Server VM Zulu11.80+21-CA (build 11.0.27+6-LTS, mixed mode)

 

 

문제 해결을 위해서 다음 블로그를 참조했습니다.
https://8156217.tistory.com/62

'JAVA' 카테고리의 다른 글

equals와 hashCode를 올바르게 재정의하는 방법  (0) 2025.08.30
JAVA NIO  (6) 2025.08.15

+ Recent posts