Я нашел причину и какой-то обходной путь.
На Glassfish 3.1, который поставляется с Mojarra 2.1, сканирование пути к классу делегировано Glassfish. Теперь, Glassfish, кажется, дает все классы файла уха вместо войны. Для этого я открыл http://java.net/jira/browse/JAVASERVERFACES-1995 (но на самом деле это ошибка Glassfish, а не JSF / Mojarra).
В ожидании исправления я исправил Мохарру следующим образом: в com.sun.faces.config.ConfigManager.java, около строки 834, я закомментировал несколько строк:
// if (provider instanceof DelegatingAnnotationProvider &&
// null != annotationScanner) {
// // This InjectionProvider is capable of annotation scanning *and*
// // injection.
// ((DelegatingAnnotationProvider)provider).setAnnotationScanner(annotationScanner,
// metadataGetter.getJarNames());
// scanUris = Collections.emptySet();
// } else {
// This InjectionProvider is capable of annotation scanning only
scanUris = metadataGetter.getAnnotationScanURIs();
// }
Журналы теперь намного менее многословны. Кажется, Glassfish все еще сканирует все классы, поэтому я все еще получаю предупреждения, подобные этому:
[#|2011-03-18T13:47:05.019+0100|WARNING|oracle-glassfish3.1|javax.enterprise.system.container.web.org.glassfish.web.loader|_ThreadID=57;_ThreadName=Thread-1;|WEB9052: Unable to load class org.apache.myfaces.custom.inputTextHelp.HtmlTextHelpRenderer, reason: java.lang.ClassNotFoundException: org.apache.myfaces.custom.inputTextHelp.HtmlTextHelpRenderer|#]
Но нет стековой трассировки от Мохарры, которая уже менее многословна.