2015-11-16 16 views
13

मैं Birt एपीआई पुस्तकालय im अपने प्रोजेक्ट का उपयोग करना चाहते तो मैं rg.eclipse.birt.runtime 4.5 Maven निर्भरता अपने प्रोजेक्ट में शामिलBirt रनटाइम Maven विरूपण साक्ष्य मुद्दा

<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> 

जब मैं अपनी रिपोर्ट मुझे मिल गया पर अमल करना चाहते हैं "org.eclipse.core.runtime.IExtensionRegistry" की हस्ताक्षरकर्ता जानकारी के कारण स्टैक ट्रेस त्रुटि के नीचे एक ही पैकेज में अन्य कक्षाओं के हस्ताक्षरकर्ता से मेल नहीं खाती है। पहले मैंने उसी लाइब्रेरी बिर्ट रनटाइम 4.5 का उपयोग किया था लेकिन मैन्युअल रूप से डाउनलोड और मेरे प्रोजेक्ट से जुड़ा हुआ था और रिपोर्ट सफलतापूर्वक उत्पन्न हुई थी।

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

'org.eclipse.osgi' के किन संस्करणों अगर इसे बाहर नहीं रखा गया तो बिर्ट रनटाइम द्वारा इस्तेमाल किया गया होगा? क्या इस बीच और वास्तव में इस्तेमाल किए गए बंडल समूह 'org.eclipse.tycho' से हस्ताक्षरकर्ता जानकारी बदल सकती है? – SpaceTrucker

+1

यदि इसे बाहर नहीं रखा गया था तो मैवेन org.eclipse.osgi के समान संस्करण (3.10.100.v20150529-1857) का उपयोग करेगा, लेकिन उस स्थिति में मुझे संदेश मिला कि यह आर्टिफैक्ट मेरे स्थानीय भंडार में मौजूद नहीं है, इसलिए ऐसा लगता है org.eclipse.birt.runtime artifact के साथ कुछ समस्या है। वही समस्या यहां वर्णित है: http://developer.actuate.com/community/forum/index.php?/topic/37040-when-will-the-450-runtime-be- उपलब्ध-in-a-maven- भंडार/आखिरकार मैंने आर्टिफैक्ट संस्करण को 4.4.1 में बदल दिया और यह अब काम करता है। – kamilx2

+1

मेरे पास बिल्कुल वही समस्या है। यह आश्चर्यजनक है कि यह अभी भी हल नहीं हुआ है। –

उत्तर

2

Maven केन्द्रीय भंडार पर org.eclipse.birt.runtime-4.5.0 उपलब्ध दोनों एक पुराने और ग्रहण प्रमाण पत्र का एक नया संस्करण के साथ हस्ताक्षर किए जार पर निर्भर करता है, लेकिन इन जार (इस मामले org.eclipse.core.runtime में) एक ही पैकेज से कक्षाओं में शामिल है। दोनों JARs से कक्षाएं लोड करते समय, JVM इस हस्ताक्षर असंगतता के कारण SecurityException फेंकता है।

उदाहरण के लिए इस org.eclipse.core.runtime पैकेज में org.eclipse.equinox.common-3.6.200.v20130402-1505.jar और org.eclipse.equinox.registry-3.6.0.v20150318-1503.jar साथ सबूत में डाल दिया जा सकता है, org.eclipse.birt.runtime-4.5.0 युक्त वर्गों के दोनों निर्भरता। केंद्रीय Maven भंडार पर उपलब्ध संस्करणों, विभिन्न प्रमाणपत्रों के साथ साइन कर रहे हैं के रूप में 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 

इसलिए SecurityException जब दोनों जार से कक्षाओं लोड करने की कोशिश। आप कर सकते हैं:

  • उपयोग संस्करण 4.6.0-20160607 Maven बजाय
  • मैन्युअल डाउनलोड करने और आधिकारिक वेबसाइट जो हाल ही में एक प्रमाण पत्र संस्करण के साथ हस्ताक्षर किए

साइड नोट जार के साथ पैक किया जाता है से संस्करण 4.5.0 देते हैं साथ: निम्नलिखित निर्भरता के साथ मेवेन प्रोजेक्ट बनाकर समस्या का पुनरुत्पादन किया जा सकता है:

<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> 

और एक कोड है जो इस तरह एक के रूप में विभिन्न प्रमाणपत्रों के साथ साइन जार में निहित वर्गों लोड होगा चल ऊपर उद्धृत, उदाहरण के लिए: जब संस्करण 4.5.0 का उपयोग कर, लेकिन संस्करण 4.6.0-20160607 साथ नहीं

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

एक समान SecurityException का परिणाम देगा।

एक और नोट:There is a similar issue संस्करण 4.2.0 एम 7 के साथ।

1

मुझे 2 समाधान मिल गए हैं। कृपया जांच करें

पहले:

उपयोग निर्भरता संस्करण 4.5.0a बजाय 4।5

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

संसाधन लिंक: https://communities.opentext.com/forums/discussion/comment/217265/#Comment_217265

दूसरा:

पूर्ण ट्यूटोरियल यहाँ कदम से कदम से दिया जाता है:

http://wiki.eclipse.org/BirtPOJO_Viewer_WebSphere_Deployment

संबंधित मुद्दे