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