본문 바로가기

개발(합니다)/시나브로(이슈)

[flutter] Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

반응형

상황

flutter에서 "> flutter doctor - flutter doctor --android-licenses" 를 실행하는데 오류가 발생했습니다.

문제 파악

설치된 자바 버전이 1.8보다 높다보니 라이브러리를 찾지 못해서 발생한 오류입니다.

해결 방법

방버은 2가지 입니다.

1. 자바 1.8로 환경을 변경한다.

2. lib를 설치한다.

1번 방법은 시스템 환경 변수에서 JAVA_HOME을 환경을 자바 1.8로 변경하면 됩니다.

2번 방법은 필요한 lib를 설치해주는 방법입니다.

아래 내용은 2번 방법에 대한 상세한 내용입니다.

  1. C:\Users\사용자\AppData\Local\Android\Sdk\tools\bin\ 안에 있는 sdkmanager.bat를 수정합니다.
set CLASSPATH=%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar
// 아래 내용 추가
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-api.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-core.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-impl.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-jxc.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\jaxb-xjc.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\activation.jar
set CLASSPATH=%CLASSPATH%;%APP_HOME%\mylib\istack-commons-runtime.jar
// 여기까지

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS%  %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%

  1. 필요한 lib 설치 후 버전 정보 제거 하기

  1. sdkmanager.bat --update를 실행합니다.
    sdkmanager update
  2. flutter doctor를 실행해 봅니다.
    flutter doctor
  3. flutter doctor --android-licenses를 실행합니다.
  4. flutter doctor로 인증됨을 확인합니다.
    라이센스 등록
반응형