LANGUAGE/!$%!% ERROR NOTE 2020. 4. 15. 13:32

Java

1. Error - 오류


java.lang.reflect.InaccessibleObjectException: Unable to make jdk.internal.loader.ClassLoaders$AppClassLoader(jdk.internal.loader.ClassLoaders$PlatformClassLoader,jdk.internal.loader.URLClassPath) accessible: module java.base does not "opens jdk.intern

2. Problem - 문제

  • https://blog.csdn.net/Fighting_Boss/article/details/91043555

        因为在 Java 9+ 以上版本中不允许使用动态加载类,因为想要使用就需要加两个参数给虚拟机
  • 번역하면..
    Java 9 이상에서는 동적 로딩 클래스가 허용되지 않으므로 가상머신에 두 개의 매개 변수를 추가해야하기 때문에

  • 혹은 Java8 이하에서 작업하던 분이라면, 갑자기 Java9로 업데이트가 되었다거나 했을 상황도 있을 것 같다.
    • => Java Version을 확인해보고 Downgrade하시길 바란다.

3. Solved - 해결

  • Java를 실행할 때, 다음 옵션을 추가하자.

      --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED

    특정 프로그램의 문제라면 VMOptions같은 옵션이 있을 수 있다. 그곳에 위 문구를 추가하여 적용하면 된다.

  • Example: -jar를 이용한 실행

      java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED -jar  xx.jar
  • Example: -cp를 이용한 실행

      java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED -cp "${PATH_TO_LIB_DIR}/*" com.something.Starter 

4. Reference - 참조