dilluns, 17 de desembre del 2012

java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Absent Code attribute in method that is not native or abstract in class file FILE_NAME

Avui m'ha apregut aquest error en intentar desplegar un projecte fet amb JSF 2.0 i Hibernate sobre Tomcat 6:


SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Absent Code attribute in method that is not native or abstract in class file ddgi/exposicionsIteAdm/contJSF/VideosnController$VideosnControllerConverter
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:514)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1473)
at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:824)
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:350)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:680)
Caused by: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Absent Code attribute in method that is not native or abstract in class file ddgi/exposicionsIteAdm/contJSF/VideosnController$VideosnControllerConverter
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:379)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225)
... 33 more
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file ddgi/exposicionsIteAdm/contJSF/VideosnController$VideosnControllerConverter
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at com.sun.faces.util.Util.loadClass(Util.java:281)
at com.sun.faces.config.AnnotationScanner.processClassList(AnnotationScanner.java:304)
at com.sun.faces.config.JavaClassScanningAnnotationScanner.getAnnotatedClasses(JavaClassScanningAnnotationScanner.java:127)
at com.sun.faces.config.DelegatingAnnotationProvider.getAnnotatedClasses(DelegatingAnnotationProvider.java:85)
at com.sun.faces.config.ConfigManager$AnnotationScanTask.call(ConfigManager.java:846)
at com.sun.faces.config.ConfigManager$AnnotationScanTask.call(ConfigManager.java:798)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:350)
... 34 more


La solució? Doncs una recerca a Google només reflecteix problemes de Maven, però en el meu cas no estic usant Maven, sinó Ant (via NetBeans), pel que no em serveix.

Al final, la solució ha consistit en:

  1. Matar tots els processos Java
  2. Iniciar NetBeans
  3. Recompilar completament el projecte
  4. Redesplegar-lo
La solució ha estat simple, però fora bo tenir una explicació millor....


dilluns, 10 de desembre del 2012

;org.artofsolving.jodconverter.office.OfficeException: could not establish connection

Avui m'he trobat amb aquest problema en un projecte que usa JSF 1.1 executant-se sobre un CentOS.
Succeeix en intentar usar OpenOffice per a convertir un docx a PDF.
El problema prové de que es tracta d'un sistema sense X, pel que no pot connectar-se a la interfície gràfica.
Segons http://www.artofsolving.com/node/10 , cal iniciar l'OpenOffice amb la comanda

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

Però en executar això dóna un error degut a que no hi ha la variable DISPLAY.

L'únic que faltava era instal·lar el paquet que permet l'execució del LibreOffice en mode headless:
 yum intall libreoffice-headless


Amb això ja ha funcionat

dimecres, 3 d’octubre del 2012

Uncompilable source code - Erroneous tree type: javax.faces.context.FacesContext

Realitzant unes modificacions a un projecte que vàrem desenvolupar fa uns anys a Amidasoft, m'ha aparegut el següent error en executar-lo (sobre un Apache Tomcat 5.5):


java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: javax.faces.context.FacesContext


Misteriosament, no apareixia a Google cap referència a un error així, de manera que m'ha calgut espavilar-me per a trobar la solució.

Després de molt barallar-mi, compilar i recompilar el projecte i totes les llibreries de les que depèn, he trobat la solució: estava afegint el JSF-1.1 al war del projecte, mentre que el que calia fer servir era el JSF-1.2


Una tonteria succeïda en copiar les llibreries, però que m'ha costat quasi un matí sencer...