2014-02-28 6 views
0

을 MyClass 클래스의 멤버에 액세스 할 수는java.lang.IllegalAccessException : 나는 다음과 같은 오류를 받고 있어요 반사 API를 사용하는 동안 클래스 zyxuSimpleCompileTest "가"수정으로

java.lang.IllegalAccessException: Class z.y.x.u.SimpleCompileTest can not access a member of class MyClass with modifiers "" 
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65) 
    at java.lang.Class.newInstance0(Class.java:351) 
    at java.lang.Class.newInstance(Class.java:310) 
    at z.y.x.u.SimpleCompileTest.reflectionCall(SimpleCompileTest.java:44) 
    at z.y.x.f.RunFunctionality.doPost(RunFunctionality.java:116) 
    at z.y.x.f.RunFunctionality.doGet(RunFunctionality.java:53) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 

이 내 Psedu 코드

입니다
public static void reflectionCall() { 
     ClassLoader classLoader = SimpleCompileTest.class.getClassLoader(); 
     try{ 
      Class aClass = classLoader.loadClass("MyClass"); 

      Object t = aClass.newInstance(); 

      System.out.println("aClass.getName() = " + aClass.getName()); 
      Method method = aClass.getDeclaredMethod ("myMethod", null); 
      method.setAccessible(true); 
      method.invoke(t, null); 
..... 
} 

다음과 같은 오류가

Object t = aClass.newInstance(); 

T 일어나고 오류를 던지고 그는 파일이 MyClass.java의 내용이 어떤 도움이 더 감사 문제 무엇인지 알아낼 수

public class MyClass { 

    public MyClass() { 
     // TODO Auto-generated constructor stub 
    } 

    public void myMethod(){ 
     System.out.println("My Method Called"); 
    } 

} 

하지이며, 실행 중에 클래스 경로에 동적으로 추가되는 jar 파일에 있습니다 MyClass.class.

+0

클래스가 무엇입니까? 그것은 (오류에서) 생성자처럼 기본 가시성, 즉 보인다. 액세스 수정자가 없습니다. –

답변

0

예외 메시지

java.lang.IllegalAccessException: Class z.y.x.u.SimpleCompileTest can not access a member of class MyClass with modifiers “” 

참고 "" 내부 변경자 값의 부족이다. Class#newInstance()의 javadoc에서는

예외 상태 :

시 IllegalAccessException를 - 클래스 또는 그 null 생성자 에 액세스 할 수없는 경우.

즉, MyClass 생성자에 액세스 할 수 없습니다. 귀하의 코드에서 그것은 것으로 보이지만, 나는 당신이 잘못 붙여 넣은 복사를 추측 할 것입니다. 대부분 public 수정자가 없습니다. 기본 액세스 가능성이 있습니다. 해당 클래스와 SimpleCompileTest 클래스가 다른 패키지에 있으므로 생성자가 표시되지 않습니다.

관련 문제