안녕하세요 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를 가리키는 것으로 변경 될 수 있습니까?
? 어떻게해야합니까? – fr34kyn01535
* "어떻게해야합니까?" 자습서를 쓰지 않으려면 좀 더 구체적이어야합니다. –