0
我得到下面的異常在編譯時手動生成管理託管bean的Java文件(JSF2與註釋),問題而動態編譯JSF2管理bean類(使用Java編譯器)
error: Class names, 'javax.faces.bean.ManagedBean,javax.faces.bean.SessionScoped,javax.faces.bean.ManagedProperty', are only accepted if annotation processing is explicitly requested.
下面是我的代碼。
List<String> options = new ArrayList<String>();
options.add("-classpath");
options.add(servletContextPath + "WEB-INF\\lib");
options.add("-d");
options.add(servletContextPath + "WEB-INF\\classes");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMan = compiler.getStandardFileManager(null,
null, null);
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
Iterable<? extends JavaFileObject> fileObjs = fileMan
.getJavaFileObjectsFromStrings(Arrays.asList(javaFileName));
List<String> annotationClassesToCompile = new ArrayList<String>();
annotationClassesToCompile.add(ManagedBean.class.getName());
annotationClassesToCompile.add(SessionScoped.class.getName());
annotationClassesToCompile.add(ManagedProperty.class.getName());
CompilationTask task = compiler.getTask(null, fileMan, diagnostics,
options, annotationClassesToCompile, fileObjs);*/
final Boolean result = task.call();
System.out.println(result.toString() + diagnostics);
for (Diagnostic diag : diagnostics.getDiagnostics()) {
System.out.println(diag.getMessage(Locale.ENGLISH));
}
感謝您的回覆,我們也找到了解決方案。精華是將jsf jars路徑添加到類路徑中。列表 options = new ArrayList (); options.add( 「 - 類路徑」); options.add(servletContextPath +「WEB-INF \\ lib」); options.add( 「 - d」); options.add(servletContextPath +「WEB-INF \\ classes」); –
2011-11-02 11:10:32