[Struts] – Múltiples ficheros Message Resources
Sabemos de las bondades de la modularización: facilitar el trabajo en equipo y la reutilización de las partes para otros proyectos. Ya hemos visto que es posible fragmentar (dividirlos en módulos) otros ficheros que utilizamos en las aplicaciones web que se tornan también monstruosos, Fragmentar Ficheros de Configuración de Frameworks. Y también es posible fragmentar los archivos que contienen los mensajes de nuestra aplicación.
Para ello debemos de declarar las partes en nuestro struts-config.xml:
<message-resources
parameter=“es/lycka/pruebas/propiedades/MessageResources”/>
<message-resources
parameter=“es.lyck.pruebas.propiedades.ErroresResources”
key=“errores”>
</message-resources>
<message-resources
parameter=“es.lyck.pruebas.propiedades.TitulosResources”
key=“titulos”>
</message-resources>
No existe limitación en el número de recursos a utilizar, pero estos recursos NO se recombinan en un único recurso: simplemente se organizan en grupos o categorías de mensajes definidos por la propiedad key de las anteriores declaraciones. Típicamente se organizan estas categorías o bien por tipo de mensajes (errores, cabeceras, nombres de campo, mensajes de información…) o bien por áreas de trabajo para facilitar el trabajo en equipo (login, clientes, productos, compras, ventas…).
La manera de invocarlos dentro de nuestras JSPs sería:
<bean:message bundle=“labels” key=“label.url”/>
Si la aplicación web está dividida en módulos ([Struts] – Aplicaciones modulares), cada módulo utiliza sus propios ficheros de mensajes, con lo cual en dos módulos diferentes pueden existir dos mensajes con las mismas claves (internamente se identifican por el nombre del módulo a modo de prefijo y la clave del mensaje).
Como decía arriba, los distintos ficheros de mensajes NO se recombinan en un único recurso; por tanto, no podemos tener un fichero de mensajes comunes a una organización, y otro particular para cada aplicación que se recombinen en uno único. Se os ocurre alguna solución para esto ? que no sea el copia y pega del fichero común en cada fichero particular, y no implique reescribir Struts
También te puede interesar:
- Fragmentar Ficheros de Configuración de Frameworks A partir del comentario de Jesús (mil agradecimientos), por fin he sacado tiempo para escribir este artículo. La motivación es simple. Los frameworks nos simplifican...
- [Struts Validator] – Validaciones múltiples validwhen Leo textualmente la guía de Struts Validator : A few quick notes on the grammer. All comparisons must be enclosed in parens. Only two items...
- Maven – Convenciones – Estructura de carpetas Maven es configurable, es decir podríamos utilizar nuestra propia estructura de carpetas. Pero es altamente recomendable seguir las convenciones Maven ya que cambiarlas no nos...
- Implementación con Struts : Control de acceso a una aplicación web Requisitos Necesitamos implantar un control de acceso de usuarios lo más genérico y simple posible a una aplicación web desplegada sobre Tomcat. Para ello tendremos...
- JavaCSV – Manejar Ficheros CSV (Excel) con Java Generalmente Java trabaja con Bases de Datos : se leen unos datos en base de datos, se presentan, el usuario interacciona, son procesados y finalmente...































:s dijo
29 de September del 2008 a las 10:35 pm
Malaxo el tutorial :s
Oscar dijo
15 de January del 2010 a las 1:37 pm
A parte del problema que tu dices, para visualizar un msg siempre tienes que indicar el “bundle” lo cual al final acabaría siendo un engorro y su mantenimiento más bien lioso.
Lo único interesante que se me ocurre sería usar múltiples struts-config. Cada uno con sus correspondientes acciones, formularios y fichero de mensajes organizados por las diversas funcionalidades/módulos de la aplicación.
Esto no sería nada extraño ya que los mensajes y acciones del módulo de “Usuarios” no tienen por qué tener nada que ver con las acciones y mensajes del módulo de “Compras” por ejemplo.
Así se conseguiría usar los mensajes de un modo transparente al “bundle” y daría la ilusión de recombinación que tú dices.
Saludos.
YeSSa dijo
17 de April del 2010 a las 7:07 pm
Ajam… y entonces cual es la solucion a la ultima interrogante???
pepe dijo
5 de October del 2011 a las 11:52 am
tengo definidos 2 archivos de recursos de la siguiente manera en el struts config:
En la jsp trato de referenciarlos de la siguiente manera:
Al probar me da portlet inhabilitado y no muestra nada, además en la consola se muestra el siguiente mensaje de error:
[5/10/11 13:42:12:293 CEST] 00000439 ServletWrappe E SRVE0068E: Se ha generado una excepción no detectada en uno de los métodos de servicio del servlet: CIDOPPortlet. Se ha generado la excepción: java.lang.NoClassDefFoundError: com.gvdi.oinarri.control.errores.ControladorErrores
at com.gvdi.oinarri.control.errores.ControladorErroresHandler.execute(ControladorErroresHandler.java:49)
at com.ibm.wps.portlets.struts.WpsStrutsUtil.processException(WpsStrutsUtil.java:2710)
at com.ibm.wps.portlets.struts.WpsStrutsUtil.executeCommand(WpsStrutsUtil.java:1438)
at com.ibm.wps.portlets.struts.WpsStrutsUtil.executeCommand(WpsStrutsUtil.java:1322)
at com.ibm.wps.portlets.struts.WpsStrutsUtil.executeSavedCommand(WpsStrutsUtil.java:1240)
at com.ibm.wps.portlets.struts.WpsStrutsPortlet.doService(WpsStrutsPortlet.java:1325)
at com.ibm.wps.portlets.struts.WpsStrutsPortlet.doView(WpsStrutsPortlet.java:1368)
at org.apache.jetspeed.portlet.PortletAdapter.service(PortletAdapter.java:158)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletDelegateImpl._dispatch(PortletDelegateImpl.java:347)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletDelegateImpl.access$200(PortletDelegateImpl.java:70)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletDelegateImpl$Context.callPortlet(PortletDelegateImpl.java:550)
at com.ibm.wps.pe.pc.legacy.services.PortletFilterServiceImpl.doFilter(PortletFilterServiceImpl.java:367)
at com.ibm.wps.pe.pc.legacy.services.PortletFilter.doFilter(PortletFilter.java:42)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletDelegateImpl.dispatch(PortletDelegateImpl.java:141)
at org.apache.jetspeed.portlet.Portlet.doGet(Portlet.java:499)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at com.ibm.wps.pe.pc.legacy.cache.CacheablePortlet.service(CacheablePortlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jetspeed.portlet.Portlet.service(Portlet.java:493)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:569)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletInvokerImpl.callMethod(PortletInvokerImpl.java:370)
at com.ibm.wps.pe.pc.legacy.invoker.impl.PortletInvokerImpl.render(PortletInvokerImpl.java:99)
at com.ibm.wps.pe.pc.legacy.PortletContainerImpl.callPortletMethod(PortletContainerImpl.java:1256)
at com.ibm.wps.pe.pc.legacy.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:461)
at com.ibm.wps.pe.pc.PortletContainerImpl.doRenderPortlet(PortletContainerImpl.java:647)
at com.ibm.wps.pe.ext.render.AbstractRenderManager.performService(AbstractRenderManager.java:264)
at com.ibm.wps.pe.pc.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:132)
at com.ibm.wps.engine.tags.PortletRenderTag.doStartTag(PortletRenderTag.java:179)
at com.ibm._jsp._Control._jspx_meth_portal$1skin_portletRender_0(_Control.java:951)
at com.ibm._jsp._Control._jspService(_Control.java:580)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.handleRequest(DispatcherServiceImpl.java:93)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.include(DispatcherServiceImpl.java:53)
at com.ibm.wps.services.dispatcher.Dispatcher.include(Dispatcher.java:50)
at com.ibm.wps.engine.templates.skins.Default.render(Default.java:154)
at com.ibm.wps.engine.templates.SkinTemplate.render(SkinTemplate.java:68)
at com.ibm.wps.composition.elements.Component.render(Component.java:634)
at com.ibm.wps.composition.elements.Control.render(Control.java:155)
at com.ibm.wps.composition.Composition.render(Composition.java:2962)
at com.ibm.websphere.personalization.transformation.PznTransformationLayoutModel.render(PznTransformationLayoutModel.java:90)
at com.ibm.wps.model.wrappers.LayoutModelWrapperFactoryImpl$LayoutModelWrapperImpl.render(LayoutModelWrapperFactoryImpl.java:275)
at com.ibm.wps.engine.tags.ComponentRenderTag.doStartTag(ComponentRenderTag.java:75)
at com.ibm._jsp._UnlayeredContainer_2D_V._jspx_meth_portal$1skin_layoutNodeRender_0(_UnlayeredContainer_2D_V.java:253)
at com.ibm._jsp._UnlayeredContainer_2D_V._jspService(_UnlayeredContainer_2D_V.java:157)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.handleRequest(DispatcherServiceImpl.java:93)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.include(DispatcherServiceImpl.java:53)
at com.ibm.wps.services.dispatcher.Dispatcher.include(Dispatcher.java:50)
at com.ibm.wps.engine.templates.skins.Default.render(Default.java:154)
at com.ibm.wps.engine.templates.SkinTemplate.render(SkinTemplate.java:68)
at com.ibm.wps.composition.elements.Component.render(Component.java:634)
at com.ibm.wps.composition.Composition.render(Composition.java:2962)
at com.ibm.websphere.personalization.transformation.PznTransformationLayoutModel.render(PznTransformationLayoutModel.java:90)
at com.ibm.wps.model.wrappers.LayoutModelWrapperFactoryImpl$LayoutModelWrapperImpl.render(LayoutModelWrapperFactoryImpl.java:275)
at com.ibm.wps.engine.tags2.PageRenderTag.doStartTag(PageRenderTag.java:534)
at com.ibm._jsp._Home._jspService(_Home.java:91)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.handleRequest(DispatcherServiceImpl.java:93)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.include(DispatcherServiceImpl.java:53)
at com.ibm.wps.services.dispatcher.Dispatcher.include(Dispatcher.java:58)
at com.ibm.wps.engine.templates.screens.Default.render(Default.java:96)
at com.ibm.wps.engine.templates.ScreenTemplate.render(ScreenTemplate.java:59)
at com.ibm.wps.engine.tags2.ScreenRenderTag.doStartTag(ScreenRenderTag.java:189)
at com.ibm._jsp._Default._jspx_meth_portal$1core_screenRender_0(_Default.java:9136)
at com.ibm._jsp._Default._jspx_meth_c_if_67(_Default.java:9157)
at com.ibm._jsp._Default._jspService(_Default.java:4226)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.handleRequest(DispatcherServiceImpl.java:93)
at com.ibm.wps.services.dispatcher.DispatcherServiceImpl.include(DispatcherServiceImpl.java:53)
at com.ibm.wps.services.dispatcher.Dispatcher.include(Dispatcher.java:50)
at com.ibm.wps.engine.templates.themes.Default.doDispatch(Default.java:283)
at com.ibm.wps.engine.templates.themes.Default.render(Default.java:236)
at com.ibm.wps.engine.templates.ThemeTemplate.render(ThemeTemplate.java:65)
at com.ibm.wps.engine.phases.WPRenderPhase.processRendering(WPRenderPhase.java:394)
at com.ibm.wps.engine.phases.WPBaseRenderPhase.execute(WPBaseRenderPhase.java:189)
at com.ibm.wps.state.phases.AbstractRenderPhase.next(AbstractRenderPhase.java:106)
at com.ibm.wps.engine.phases.WPAbstractRenderPhase.next(WPAbstractRenderPhase.java:97)
at com.ibm.wps.engine.Servlet.callPortal(Servlet.java:806)
at com.ibm.wps.engine.Servlet.doGet(Servlet.java:608)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at com.ibm.wps.engine.Servlet.doFilter(Servlet.java:1188)
at com.ibm.wps.resolver.servlet.ContentHandlerCleanup.doFilter(ContentHandlerCleanup.java:648)
at com.ibm.wps.resolver.servlet.AbstractFilter.doFilter(AbstractFilter.java:82)
at com.ibm.wps.engine.Servlet.service(Servlet.java:1179)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
at com.ibm.catalog.servlet.filter.ParameterFilter.doFilter(ParameterFilter.java:130)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.wps.engine.ExtendedLocaleFilter.doFilter(ExtendedLocaleFilter.java:113)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.wps.resolver.friendly.servlet.FriendlySelectionFilter.doFilter(FriendlySelectionFilter.java:191)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.wps.mappingurl.impl.URLAnalyzer.doFilter(URLAnalyzer.java:365)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.wps.engine.VirtualPortalFilter.doFilter(VirtualPortalFilter.java:88)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.wps.state.filter.StateCleanup.doFilter(StateCleanup.java:89)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:748)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: java.lang.ClassNotFoundException: com.gvdi.oinarri.control.errores.ControladorErrores
at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:479)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
… 176 more
Alguna sugerencia?
yoyoooyoy dijo
5 de October del 2011 a las 1:23 pm
Buenas majo,
mándame un correo con tu código (el mail está en la página de contacto) y le echo un ojo cdo pueda, pero no tiene pinta que sea un error del tema de esta entrada.
Saludos