에러(error)

cannot be accessed from outside package

 

원인(cause)

다른 pacakge에 있는 class를 참조하는 경우, 해당 class가 public으로 정의되어 있지 않은 경우발생한다.

발생하는 예로 A package에 abstract class 만들어 놓고 B pacakage에서 상속받아 사용하려는데, 해당 abstract class가 public으로 정의되어 있지 않았기 때문에 A package에 존재는 하지만, B package에 접근할 수 없다는 error가 발생하는 것이다.

 

해결(solution)

사용하려는 class의 접근 제어자(access modifier)를 public으로 수정한다.

 

재현(reproduce) 

package com.test.A > SampleParent.java

abstract class SampleParent { // 다른 package에서 사용가능하게 하려면 public 으로 정의해야 한다. 
  ...  
}

 

package com.test.B > SampleChild.java

import com.test.A.SampleParent; // error 발생
public class SampleChild extends SampleParent {
  ...
}