2015-11-16 13 views
13

voglio usare Birt Api biblioteca im mio progetto così ho incluso rg.eclipse.birt.runtime dipendenza 4,5 Maven nel mio progettoBirt Runtime problema Maven artefatto

<dependency> 
     <groupId>org.eclipse.birt.runtime</groupId> 
     <artifactId>org.eclipse.birt.runtime</artifactId> 
     <version>4.5.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.eclipse.birt.runtime</groupId> 
       <artifactId>org.eclipse.osgi</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.tycho</groupId> 
     <artifactId>org.eclipse.osgi</artifactId> 
     <version>3.10.100.v20150529-1857</version> 
    </dependency> 

Quando voglio eseguire il mio rapporto ho avuto sotto lo stack errore di traccia causato da "org.eclipse.core.runtime.IExtensionRegistry" le informazioni sul firmatario non corrispondono alle informazioni sul firmatario di altre classi nello stesso pacchetto. In precedenza ho utilizzato la stessa libreria Birt Runtime 4.5 ma scaricato e collegato manualmente al mio progetto e il rapporto è stato generato correttamente.

org.eclipse.birt.core.exception.BirtException: error.CannotStartupOSGIPlatform 
    at org.eclipse.birt.core.framework.Platform.startup(Platform.java:81) 
    at org.report.birt.service.BirtApi.getReport(BirtApi.java:33) 
    at org.report.birt.endpoint.BirtEndPoint.handleRequest(BirtEndPoint.java:49) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.ws.server.endpoint.MethodEndpoint.invoke(MethodEndpoint.java:134) 
    at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:291) 
    at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:55) 
    at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:236) 
    at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:176) 
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:89) 
    at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61) 
    at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.SecurityException: class "org.eclipse.core.runtime.IExtensionRegistry"'s signer information does not match signer information of other classes in the same package 
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:952) 
    at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:794) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1190) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1190) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.eclipse.birt.core.framework.jar.ServicePlatform.<init>(ServicePlatform.java:46) 
    at org.eclipse.birt.core.framework.jar.ServiceLauncher.startup(ServiceLauncher.java:46) 
    at org.eclipse.birt.core.framework.Platform.startup(Platform.java:75) 
    ... 35 more 
+1

Quale versione di 'org.eclipse.osgi' sarebbe stato usato dal runtime di birt se non fosse stato escluso? Potrebbero essere modificate le informazioni sul firmatario tra questo e il pacchetto effettivamente utilizzato dal gruppo 'org.eclipse.tycho'? – SpaceTrucker

+1

Se non fosse escluso allora Maven avrebbe usato la stessa versione (3.10.100.v20150529-1857) di org.eclipse.osgi ma in quel caso ho ricevuto il messaggio che questo artefatto non è presente nel mio repository locale quindi sembra lì è un problema con lo stesso manuf.eclipse.birt.runtime. Lo stesso problema è descritto qui: http://developer.actuate.com/community/forum/index.php?/topic/37040-when-will-the-450-runtime-be-available-in-a-maven- repository/.Finally Ho cambiato la versione di artefatto in 4.4.1 e ora funziona. – kamilx2

+1

Ho esattamente lo stesso problema. È incredibile che non sia ancora risolto. –

risposta

2

org.eclipse.birt.runtime-4.5.0 accessibile Maven centrale Repository dipende JAR firmati sia con una vecchia e una nuova versione del certificato di Eclipse, ma questi vasi contiene le classi dello stesso package (in questo caso org.eclipse.core.runtime). Quando si caricano le classi da entrambi i JAR, la JVM genera tale SecurityException a causa di questa incongruenza della firma.

Per esempio questo può essere messo in evidenza con org.eclipse.equinox.common-3.6.200.v20130402-1505.jar e org.eclipse.equinox.registry-3.6.0.v20150318-1503.jar, entrambi dipendenze di org.eclipse.birt.runtime-4.5.0 classi contenenti in org.eclipse.core.runtime pacchetto. Versioni disponibili sul repository centrale Maven sono firmati con diversi certificati, come dimostrano jarsigner -verify -verbose -certs xxx.jar:

//org.eclipse.equinox.common-3.6.200.v20130402-1505.jar 
[entry was signed on 09/04/13 15:24] 
X.509, CN="Eclipse.org Foundation, Inc.", OU=IT, O="Eclipse.org Foundation, Inc.", L=Ottawa, ST=Ontario, C=CA 

//org.eclipse.equinox.registry-3.6.0.v20150318-1503.jar 
[entry was signed on 18/03/15 18:14] 
X.509, CN="Eclipse Foundation, Inc.", OU=IT, O="Eclipse Foundation, Inc.", L=Ottawa, ST=Ontario, C=CA 

qui la SecurityException quando si cerca di caricare classi da entrambi i JAR. È possibile:

  • Utilizzare la versione 4.6.0-20160607 con Maven invece
  • manualmente scaricare e allegare la versione 4.5.0 dal sito ufficiale che è confezionato con i vasi firmati con una versione certificato recente

Nota a margine: Il problema può essere riprodotto creando un progetto Maven con la seguente dipendenza:

<dependency> 
     <groupId>org.eclipse.birt.runtime</groupId> 
     <artifactId>org.eclipse.birt.runtime</artifactId> 
     <version>4.5.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.eclipse.birt.runtime</groupId> 
       <artifactId>org.eclipse.osgi</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

e utilizzare un codice che caricherà classi contenute in barattoli firmati con diversi certificati come quella citata, ad esempio:

Class.forName("org.eclipse.core.runtime.Assert").getResource("Assert.class"); 
Class.forName("org.eclipse.core.runtime.IExtensionRegistry").getResource("IExtensionRegistry.class"); 

si tradurrà in un simile SecurityException quando si utilizza versione 4.5.0 ma non con la versione 4.6.0-20160607.

Un'altra nota:There is a similar issue con versione 4.2.0 M7.

1

Ho 2 soluzioni. Si prega di verificare

Primo:

Utilizzare la versione 4.5.0a dipendenza invece di 4.5

<dependency> 
<groupId>org.eclipse.birt.runtime</groupId> 
<artifactId>org.eclipse.birt.runtime</artifactId> 
<version>4.5.0a</version> 
</dependency> 

Risorsa Collegamento: https://communities.opentext.com/forums/discussion/comment/217265/#Comment_217265

Secondo:

esercitazione completa è data dal passo dopo passo qui:

http://wiki.eclipse.org/BirtPOJO_Viewer_WebSphere_Deployment

Problemi correlati