2013-06-09 1 views
0

안녕하세요 stackoverflow'ers! 특정 패키지의 인터페이스에서 모든 클래스를 나열하려고합니다. 나는 여러 솔루션을 가로 질러 와서 시도 다음패키지의 모든 인터페이스를 jar 파일에 나열하십시오.

반사 사용 :

AllCommands = new ArrayList<ICommand>(); 
Reflections reflections = new Reflections(this.getClass().getPackage().getName()); 
commandClasses = reflections.getSubTypesOf(ICommand.class); 
for (Class<? extends ICommand> c :commandClasses){ 
    AllCommands.add((ICommand)c.newInstance()); 
} 

사용 extcos을 : 두 솔루션이 성공적으로 (7.3) 넷빈즈에서 디버깅 내 모든 클래스를 나열하는

AllCommands = new ArrayList<ICommand>(); 
ComponentScanner scanner = new ComponentScanner(); 
scanner.getClasses(new ComponentQuery() { 
    @Override 
    protected void query() { 
     select(). 
     from(this.getClass().getPackage().getName()). 
     andStore(thoseImplementing(ICommand.class).into(commandClasses)). 
     returning(none()); 
    } 
}); 
for (Class<? extends ICommand> c :commandClasses){ 
    AllCommands.add((ICommand)c.newInstance()); 
} 

,하지만 항아리를 컴파일하고 실행할 때 commandClasses 컬렉션은 비어있는 것처럼 보입니다. 나는 java에 익숙하지 않지만 클래스 패스와 디버깅 시간은 항아리가 아닌 \ target \ classes 폴더에서 클래스를 가져와야한다.

누군가 나를 .jar로 클래스를 나열 할 수있는 솔루션으로 도와 줄 수 있습니까? this.getClass(). getPackage(). getName()이 jar를 가리키는 것으로 변경 될 수 있습니까?

+0

? 어떻게해야합니까? – fr34kyn01535

+0

* "어떻게해야합니까?" 자습서를 쓰지 않으려면 좀 더 구체적이어야합니다. –

답변

0

나는 그것을 스스로 알아 냈다. Packagename은 classes 폴더의 파일을 가리키며 jar 파일의 클래스를 참조하기 위해 this.getClass(). getPackage(). getName()을 사용한다. . ' ~ '/'. 어쨌든 고맙습니다.