2015-11-16 21 views
13

私はバートAPIライブラリを使用するには、私のプロジェクトをイム以下のようなスタックトレースエラー"org.eclipse.core.runtime.IExtensionRegistry"の署名者情報は、同じパッケージ内の他のクラスの署名者情報と一致しません。以前は同じライブラリBirt Runtime 4.5を使用していましたが、手動でダウンロードしてプロジェクトに添付して、レポートが正常に生成されました。 Mavenの中央リポジトリで利用できるバートランタイムMavenのアーティファクトの問題

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

どのバージョンそれが除外されていなければ、birtランタイムによって使用されていましたか?これと実際に使用されたバンドルの間で署名者情報が 'org.eclipse.tycho'グループから変更された可能性がありますか? – SpaceTrucker

+1

除外されていなければ、mavenはorg.eclipse.osgiと同じバージョン(3.10.100.v20150529-1857)を使用しますが、この場合、私のローカルリポジトリにはこのアーティファクトが存在しないというメッセージが表示されますorg.eclipse.birt.runtimeアーティファクト自体に問題があります。同じ問題がここに記述されています:http://developer.actuate.com/community/forum/index.php?/topic/37040-when-will-the-450-runtime-be-available-in-a-maven-リポジトリ/。最後にアーティファクトバージョンを4.4.1に変更しました。 – kamilx2

+1

私は全く同じ問題があります。それはまだ解決されていない驚くべきことです。 –

答えて

2

org.eclipse.birt.runtime-4.5.0古いとEclipse証明書の新しいバージョンの両方で署名のJARファイルに依存しますが、これらのJAR(この場合org.eclipse.core.runtimeで)同じパッケージからのクラスが含まれています。両方のJARからクラスをロードするとき、JVMはこのシグニチャの不一致のためにSecurityExceptionをスローします。例えば

これはorg.eclipse.birt.runtime-4.5.0含むクラスの両方の依存関係はorg.eclipse.core.runtimeパッケージで、org.eclipse.equinox.common-3.6.200.v20130402-1505.jarorg.eclipse.equinox.registry-3.6.0.v20150318-1503.jarと証拠に入れることができます。 jarsigner -verify -verbose -certs xxx.jarで示すように、中央Mavenのリポジトリ上で使用可能なバージョンは、異なる証明書で署名されている:従ってSecurityException

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

両方のJARファイルからのクラスをロードしようとしています。次のことができます。

  • 使用バージョン4.6.0-20160607をMavenの代わりに
  • 手動でダウンロードして、最新の証明書のバージョンで

サイドノートに署名したJARファイルにパッケージされている公式サイトからバージョン4.5.0を添付して:問題は次の依存関係を持つ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> 

そしてそのようなものとして、異なる証明書で署名されたJARファイルに含まれるクラスをロードするコードを実行しては、例えば、上記で引用:バージョン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をもたらすであろう。

別の注記:バージョン4.2.0 M7のThere is a similar issue

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

第二:

完全なチュートリアルはここで一歩一歩で与えられる : `org.eclipse.osgi`の

http://wiki.eclipse.org/BirtPOJO_Viewer_WebSphere_Deployment

関連する問題