errores de inicio de embarcadero con errores de información del firmante

Dado que configuré algunas dependencias de Maven en "proporcionado" en lugar de "compilar" el alcance, recibí este error al iniciar Jetty:

  • aplicación JEE5
  • debe ejecutarse en WebSphere 7 y Jetty 7
  • Primavera 3

El error:

java.lang.SecurityException: class "javax.servlet.ServletRequestListener"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:806)
    at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:625)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:386)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
    at org.eclipse.jetty.server.handler.ContextHandler.setEventListeners(ContextHandler.java:554)
    at org.eclipse.jetty.webapp.WebAppContext.setEventListeners(WebAppContext.java:946)
    at org.eclipse.jetty.webapp.WebAppContext.addEventListener(WebAppContext.java:972)
    at org.eclipse.jetty.webapp.TagLibConfiguration.preConfigure(TagLibConfiguration.java:492)
    at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:418)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
    at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
    at org.eclipse.jetty.server.Server.doStart(Server.java:260)
    at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
    at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:516)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

La sección maven es:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <packaging>war</packaging>
    <artifactId>myApp.war</artifactId>
    <!--name??-->

    <parent>
        <groupId>com.example</groupId>
        <artifactId>myApp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java-version>1.5</java-version>
        <org.springframework-version>3.0.5.RELEASE</org.springframework-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <org.aspectj-version>1.6.9</org.aspectj-version>
        <org.slf4j-version>1.6.1</org.slf4j-version>
        <cxf.version>2.5.2</cxf.version>
        <jetty.version>7.6.3.v20120416</jetty.version>
        <skipTests>true</skipTests>
        <log4j.version>1.2.15</log4j.version>
    </properties>

    <!-- … -->
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
                 <artifactId>jetty-maven-plugin</artifactId>
                 <version>${jetty.version}</version>

                 <dependencies>
                     <dependency>
                         <groupId>commons-dbcp</groupId>
                         <artifactId>commons-dbcp</artifactId>
                         <version>1.4</version>
                     </dependency>
                     <dependency>
                         <groupId>commons-logging</groupId>
                         <artifactId>commons-logging</artifactId>
                         <version>1.1</version>
                         <type>jar</type>
                     </dependency>
                 </dependencies>

                 <configuration>
                     <scanIntervalSeconds>5</scanIntervalSeconds>
                     <webAppConfig>
                         <contextPath>/</contextPath>
                     </webAppConfig>
                     <connectors>
                         <connector implementation="org.eclipse.jetty.server.bio.SocketConnector">
                             <port>8080</port>
                             <!-- this connector defaults to 1300 for some reason -->
                         </connector>
                     </connectors>
                     <!--
                     <useProvided>true</useProvided>
                     -->
                 </configuration>
             </plugin>

No puedo conseguir la causa. Cualquier sugerencia es bienvenida ;)

preguntado el 22 de mayo de 12 a las 14:05

3 Respuestas

Parece que está incluyendo la API de servlet como una dependencia provista y agregando esto a la ruta de clase de Jetty. Esto está en colisión con las propias clases de API de servlet empaquetadas de Jetty y provoca la excepción.

Es absolutamente correcto incluir la API del servlet como una dependencia provista; el problema está en el <useProvided> parámetro en la configuración del complemento, que agrega la API de servlet al classpath. Sería mejor excluir esto y, si tiene otras dependencias con el alcance proporcionado que aún no están en Jetty, agréguelas a las dependencias del complemento, como lo ha hecho con commons-dbcp.

Véanse también los comentarios en http://jira.codehaus.org/browse/JETTY-429, que analizan posibles confusiones similares.

respondido 13 mar '13, 16:03

Tuve un problema similar con javax.servlet porque había versiones jar 2.4 y 3.0.0 en Eclipse Libraries/Maven Dependencies. A arreglarlo en Eclipse abra pom.xml del proyecto, pestaña Jerarquía de dependencia, filtre por "servlet", elija (botón derecho del mouse) 2.4 (o 2.5) innecesarios y "Excluir artefacto Maven ..." Gracias a Valery Gorbunov por la pista :)

respondido 13 nov., 12:07

Quité el

             <dependency>
                 <groupId>commons-logging</groupId>
                 <artifactId>commons-logging</artifactId>
                 <version>1.1</version>
                 <type>jar</type>
             </dependency>

en jetty y ahora funciona... parece que otra implementación de Logger entra en conflicto con commons-logging? Todavía no entendí la pista, pero por ahora... funciona... A veces, Maven y Java no son los mejores amigos o soy demasiado estúpido;)

contestado el 24 de mayo de 12 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.