2014-02-27 2 views
2

코드에서 특정 jar 파일을 실행할 때 문제가 발생했습니다. 내 목표는 사용자가 다양한 xml 파일을 선택하고 실행할 jar 파일을 선택하고 입력 xml을 제공하는 GUI 응용 프로그램 (마법사)을 작성하는 것이 었습니다. 1: URL[] urls = fillUrls(); 2: loader = new URLClassLoader(urls); 3: Class<?> cls = loader.loadClass(className); 4: Method execute = cls.getDeclaredMethod(methodName, Properties.class, StringBuffer.class, StringBuffer.class, IContext.class); // method name is declared as: // private final String methodName = "execute"; 코드에서 jar를 실행할 때 java.utilExceptionNoSuchMethodException

방법 fillUrls 실행 항아리에 필요한 실행 항아리와 다른 라이브러리의 1 개 반환 URL이 실행 줄에 :

은이 코드를 사용하여 항아리를 실행합니다. 생략하면 3 행에서 예외가 발생합니다. 메소드가 4 행에 도달하면 java.lang.NoSuchMethodException이 발생합니다.

jar의 실행 된 클래스가 인터페이스를 구현하므로 그러한 메소드가 없을 가능성이 있습니다. 그리고 더 재미있게 만들기 위해 내가 테스트에 사용했던 jar 파일이 완벽하게 실행됩니다. 다른 사람들이 제공하는 jar 파일은 완벽하지 않습니다. ...

그래서 내 코드에 문제가 있거나 문제가 될 수 있습니까? 파일을 내 보냈습니까? 그것을 증명할 방법이 있습니까? 내 보낸 jar는 maven2 프로젝트에서 가져온 것입니다.

답변

1

이 도움이 될 수 있습니다 :

로더 = 새 인 URLClassLoader.newInstance (URL을);

+0

어떻게 도와야합니까? "URLClassLoader.newInstance를 유형으로 해석 할 수 없습니다."오류 만 생성합니다. 게다가, 제 문제의 원인은 4 번 줄에 있습니다. – dallows

+1

newInstance는 URLCLassloader의 정적 메서드이며 보안 관리자가 설치된 경우 securityManager.checkPackageAccess를 호출합니다. –

0
cls.getDeclaredMethod(methodName, Properties.class, 
        StringBuffer.class, StringBuffer.class, IContext.class); 

일치하는 메소드가없는 경우 throws NoSuchMethodException이 표시됩니다.

주어진 메서드 이름 및 메서드의 형식 매개 변수 형식이 (Properties.class,StringBuffer.class, StringBuffer.class, IContext.class) 인 선언 된 순서로 Class (제공된 클래스 이름)에 해당 메서드가 없습니다.

+0

글쎄, 메서드는 커넥터에 있어야하지만 나는 형식 매개 변수의 순서에 대해 그렇게 확신하지는 않습니다. – dallows

+0

방법에 대한 클래스 소스를 확인할 수 있습니까? – Keerthivasan

+0

방금 ​​알아 낸 바에 따르면 그들은 수업을 재 작업했습니다. 이제는 리소스를 구현하는 대신 다른 두 개의 클래스를 확장합니다. 그러나 두 클래스 모두 클래스 로더에 추가됩니다. 방법을 어떻게 실행해야 하는지를 변경합니까? – dallows