2014-02-13 2 views
0

클래스가 거의없고 그 안에 정의 된 메서드가있는 Jar 파일을 읽으려고합니다. 각 클래스를로드하지 않고 모든 클래스에서 선언 된 모든 메서드를 가져 오려고합니다. 그것은 가능한가?클래스를로드하지 않고 jar에서 메소드를로드하는 방법은 무엇입니까?

다음은 jar 파일 및 메소드를로드하는 방법입니다 (지금부터 클래스 이름 사용). 사전에

File urlclasspath = new File(newJarPath); 
     URL urlarray[] = new URL[1]; 
     urlarray[0] = urlclasspath.toURI().toURL(); 
     ClassLoader loader = new ClassLoader(urlarray); 
     Class<?> myclass = loader 
       .loadClass($classname$); 

     Object obj = myclass.newInstance(); 
     Method add = myclass.getMethod("add", new Class[] { Integer.TYPE, 
       Integer.TYPE }); 
     add.invoke(obj, 
       new Object[] { new Integer(var1), new Integer(var2) }); 

     if (obj == null) { 
      System.out 
        .println("FAIL: Could not create an instance of the loaded class"); 
      } 

덕분에

+1

그냥 궁금 해서요. 왜 이렇게하고 싶습니까? – Fildor

+0

@Yunkhan 가능하지 않습니다 – 1ac0

+0

이클립스 플러그인이 필요합니다 .. – Yunkhan

답변

1

클래스의 모든 메소드에 대한 컨테이너입니다. 순서는 방법에 도달하기 때문에 먼저 클래스를로드해야합니다.

+0

아 .. 근본적으로 가능하지 않나요? 내가 이걸 성취 할 수있는 또 다른 방법은 ..? URLClassLoader를 제외한 다른 것을 사용하여 런타임 중에 jar를로드 할 수 있습니다. :/ – Yunkhan

+0

@Yunkhan 예, 기본적으로 불가능합니다. 클래스 인스턴스를 만들고이 인스턴스를 사용하거나 클래스의 정적 메서드를 사용하십시오. – 1ac0

+0

현재 클래스 로더의 jar에서 클래스를로드하려면이 작업을 수행하면됩니다. – Sanjeev

관련 문제