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;}
당신은 OSGi를 사용하고 있습니까 : – nrainer
아니, 단지 자바, 메이븐 – TinyOS
응답을 줄 아무도 !! – TinyOS