2015-02-05 1 views
0

나는 자바 반사와 내 모든 패키지의 이름을 표시하려고 내가 주요 방법으로 테스트 할 때 그것은 완벽하게 작동 :왜 자바 스크립트로 내 클래스를 호출 자바 반사 dosn't 작동합니까?

라는 클래스 test1.java에 whitch 모든 패키지 이름을 얻을 수있는 메도 : 같은 클래스에서

public Set<String> findAllPackages(String packagebase) { 
    List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>(); 
    classLoadersList.add(ClasspathHelper.contextClassLoader()); 
    classLoadersList.add(ClasspathHelper.staticClassLoader()); 
    Reflections reflections = new Reflections(
      new ConfigurationBuilder() 
        .setScanners(new SubTypesScanner(false), 
          new ResourcesScanner()) 
        .setUrls(
          ClasspathHelper.forClassLoader(classLoadersList 
            .toArray(new ClassLoader[0]))) 
        .filterInputsBy(
          new FilterBuilder().include(FilterBuilder 
            .prefix(packagebase)))); 
    Set<Class<? extends Object>> classes = reflections 
      .getSubTypesOf(Object.class); 
    Set<String> packageNameSet = new TreeSet<String>(); 
    for (Class classInstance : classes) { 
     packageNameSet.add(classInstance.getPackage().getName()); 
    } 
    return packageNameSet; 
} 

내 주요 방법 :

public static void main(String[] args) throws ClassNotFoundException, 
     IOException { 
    for (String pack : new test1().findAllPackages("org.basepackage")) { 
     System.out.println(pack); 
    } 
} 
,

내 메소드를 내 managedbean에 넣으려고하거나 내 test1.java 클래스를 내 menagedbean에 instanci하면 너무 잘 작동하지 않으며 findAllPackages 루프를 찾지 못했습니다. 내가 그 ManagedBean은

내 JSF의 게터에게 packageNameItems의 & 세터가

@Named 
@ViewScoped 
public class mymanagedbean implements Serializable { 
private List<SelectItem> packageNameItems; 
@PostConstruct 
public void init() {   
    try { 
     packageNameItems=new ArrayList<SelectItem>(); 
     packageNameItems=(new test1().loadpackageName("org.basepackage")); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

다음과 같습니다 :

<h:form> 
       <h:selectOneMenu value="#{mymanagedbean.packageName}"> 
        <f:selectItems value="#{mymanagedbean.classNameItems}"/> 
       </h:selectOneMenu> 
      </h:form> 
01처럼

내 콩 보인다

의견이 있으십니까?

public Set<String> findAllPackages(String packagebase) { 
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>(); 
classLoadersList.add(ClasspathHelper.contextClassLoader()); 
classLoadersList.add(ClasspathHelper.staticClassLoader()); 
Reflections reflections = new Reflections(
     new ConfigurationBuilder() 
       .setScanners(new SubTypesScanner(false), 
         new ResourcesScanner()) 
       .setUrls(
         ClasspathHelper.forClassLoader(classLoadersList))) 
       .filterInputsBy(
         new FilterBuilder().include(FilterBuilder 
           .prefix(packagebase)))); 
Set<Class<? extends Object>> classes = reflections 
     .getSubTypesOf(Object.class); 
Set<String> packageNameSet = new TreeSet<String>(); 
for (Class classInstance : classes) { 
    packageNameSet.add(classInstance.getPackage().getName()); 
} 
return packageNameSet;} 
+0

당신은 OSGi를 사용하고 있습니까 : – nrainer

+0

아니, 단지 자바, 메이븐 – TinyOS

+0

응답을 줄 아무도 !! – TinyOS

답변

0

나는이 문제를 해결?