Проблема при динамической компиляции класса управляемых bean-компонентов jSF2 (с использованием компилятора java) - PullRequest
0 голосов
/ 05 июня 2011

Я получаю исключение ниже при компиляции вручную сгенерированных Java-файлов управляемого управляемого компонента (JSF2 с аннотациями),

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));
    }

1 Ответ

0 голосов
/ 05 июня 2011

Сообщение об ошибке error: Class names, 'X', are only accepted if annotation processing is explicitly requested. отображается, когда расширение неверно для скомпилированного предоставленного класса. Должен существовать суффикс .java для всех исходных файлов, скомпилированных с помощью Java Tools API.

Хотя в документации API StandardJavaFileManager указывается, что могут быть предоставлены обычные файлы, в настоящее время это, по-видимому, ограничено файлами с расширением .java, вытекающими из исправления ошибки 6422327 в Sun Bug DB .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...