2014년 6월 12일 목요일

Access restriction: Is not accessible due to restriction on required library

JUnit 테스트를 위해 클래스에 대해 JUnit Testcase 를 생성했지만

org.junit.Test 에 대해 Access restriction 에러가 발생을 해서 구글링을 해보았다.


검색 결과 문제해결을 위해 라이브러리의 Access Rules 를 편집해 주어야 했다.

solution>

Properties > Java Build Path > Libraries > Expand "Target Library" > Edit Access Rules


내 경우 JUnit 을 라이브러리로 추가하지 않고 JRE 라이브러리에 junit.jar 파일을 추가했기 

때문에 해당 페이지에서 Access Rules 를 변경할 수 없었다. 당연한 것이 라이브러리 안에

포함되어 있는 각 jar 파일에 대한 Access Rules 는 변경이 불가능한 것이었다. 라이브러리

자신의 Access Rules 만 편집이 가능했다. 

따라서 JUnit 을 라이브러리로 추가한 후, 해당 라이브러리에 대한 Access Rules 변경은

가능했다. 하지만 꼼수로 JRE 라이브러리를 프로젝트로부터 제거/재추가를 통해 junit.jar

의 Access Rules 를 No rules defined 로 초기화 할 수 있었다.


구글링을 보면 Windows > Preference > Java > Compiler > Errors/Warnings 에서 

Forbidden reference (access rules) 의 레벨을 Warning 이나 Ignore 로 낮추라는 

꼼수도 있지만 단지 화면상에 에러만 사라질 뿐 해당 library 에 접근할 수 없는 것은 

변하지 않는다. (즉 에러가 사라진 게 아니다...)


먼저 해당 라이브러리에 클래스가 있는지 확인을 해보고 클래스가 있음에도 접근이 

제한되어 있는 경우(Access Rules 설정으로 인해) 라이브러리의 Access Rules 를 편집

하여 접근 권한을 허가해주어야 한다.

댓글 없음:

댓글 쓰기