!!! Android 개발에 있어 많고 많은 빌드 에러 중 Windows 환경에서 종종 발생하는 에러에 대한 내용입니다 !!!!

Android Studio에서 Test Coverage를 돌릴 경우 발생하는 에러에 대해서 얘기해보려 합니다.

 

먼저 작성한 코드의 테스트 코드를 작성 후 Run 으로 동작이 잘 됨을 확인한 상태였습니다.

그 후 Run ... with Coverage 동작시 아래와 같은 에러가 발생하더군요.

java.lang.reflect.InvocationTargetException
FATAL ERROR in native method: processing of -javaagent failed
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
	at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)

 

구글링을 해보아도 딱히 짐작이 가는 부분이 없습니다.

더 찾아보다보니 아래와 같은 내용이 있더군요.

https://youtrack.jetbrains.com/issue/IDEABKL-5941

안타깝게도 러시아 사용자도 유사한 증상을 겪은 것으로 보이죠.

Temp 경로에 러시아 문자가 들어가면서 발생한 것으로 보고 있고요.

저는 한글 유저명이 문제가 된 것으로 추정할 수 있었습니다.

다시 Android Studio 로 돌아가서 Run 윈도우를 뒤져 실행다시 커맨드를 봅니다.

 

아 제 환경은 gradle 경로도 미리 D 드라이브로 변경해놓은 상태였습니다.

https://nobase-dev.tistory.com/273

원인은 Temp 경로가 Windows 환경에서는 사용자 홈으로 잡혀서 생긴 문제로 보입니다.

https://stackoverflow.com/a/29716813

https://docs.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-gettemppatha?redirectedfrom=MSDN#remarks

위 글들을 보면 기본으로 사용자 홈이 잡힌 이유는 아래와 같네요.

  1. Java에서 temp 경로를 Windows 환경에서는 Win32API 인 GetTempPath를 사용함
  2. GetTempPath에서는 아래의 순서로 경로를 지정함.
  3. The path specified by the TMP environment variable.
  4. The path specified by the TEMP environment variable.
  5. The path specified by the USERPROFILE environment variable.
  6. The Windows directory.

아무튼 다시 아래 글을 보아 Android Studio에서도 temp 경로를 수정해봅니다.

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000020720-IntelliJ-Idea-generate-classpath-jar-files-in-C-Users-User-AppData-Local-Temp-

 

IntelliJ Idea generate classpath.jar files in C:\Users\User\AppData\Local\Temp\

I need change location where IntelliJ Idea generate the classpath.jar files. When I generate a new service, controller or domain file, is generated a new classpath.jar file in C:\Users\User\AppData...

intellij-support.jetbrains.com

Help -> Edit Custom VM Option 에서 아래 문구 추가 후 Android Studio 재시작

(studio64.exe.vmoptions)

# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Djava.io.tmpdir=d:/temp

 

이제 다시 Run ... with Coverage를 돌려봅니다.

 

오오 이제 잘 나오네요.

한글 Windows에서 개발은 참 다양한 어려움들이 있는 것 같네요. ^^

+ Recent posts