ryantenney / passkit4j

Java library for generating Apple Passbook (.pkpass) files

Home Page:http://www.ryantenney.com/passkit4j/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.lang.ClassNotFoundException: org.bouncycastle.asn1.ASN1ObjectIdentifier

fkrauthan opened this issue · comments

I get this exception while creating a pass:

Caused by: java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1ObjectIdentifier
        at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
        at org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoGeneratorBuilder$NamedHelper.createContentSigner(Unknown Source)
        at org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoGeneratorBuilder.build(Unknown Source)
        at com.ryantenney.passkit4j.sign.PassSignerImpl.generateSignature(PassSignerImpl.java:100)
        at com.ryantenney.passkit4j.PassSerializer.writePkPassArchive(PassSerializer.java:61)
        at com.***.service.passbook.PassbookGeneratorServiceLocalServiceBean.generatePass(PassbookGeneratorServiceLocalServiceBean.java:153)
        at com.***.service.passbook.PassbookGeneratorServiceLocalServiceBean.createAndGeneratePass(PassbookGeneratorServiceLocalServiceBean.java:80)
        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.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
        at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
        at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
        at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
        at com.***.service.auditing.ServiceCallAuditingInterceptor.auditServiceCall(ServiceCallAuditingInterceptor.java:131)
        at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
        at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
        at sun.reflect.GeneratedMethodAccessor129.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
        at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
        at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
        at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
        at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
        ... 56 more
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.ASN1ObjectIdentifier
        at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)
        at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 91 more
|#]

If I add this to my pom file

        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk16</artifactId>
            <version>1.46</version>
        </dependency>

I get this error

Caused by: java.lang.NoSuchFieldError: sha224WithRSAEncryption
        at org.bouncycastle.operator.jcajce.OperatorHelper.<clinit>(Unknown Source)
        at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.<init>(Unknown Source)
        at org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoGeneratorBuilder$NamedHelper.createContentSigner(Unknown Source)
        at org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoGeneratorBuilder.build(Unknown Source)
        at com.ryantenney.passkit4j.sign.PassSignerImpl.generateSignature(PassSignerImpl.java:100)
        at com.ryantenney.passkit4j.PassSerializer.writePkPassArchive(PassSerializer.java:61)
        at com.***.service.passbook.PassbookGeneratorServiceLocalServiceBean.generatePass(PassbookGeneratorServiceLocalServiceBean.java:153)

Are you using Java 5 any chance? I changed the pom to use bcmail-jdk15on so it will work with Java 5 - 7, and uploaded a new snapshot 1.0.1-SNAPSHOT. Try that out and let me know?

No we ware using java version 1.6.0_35. With version 1.0.1-SNAPSHOT I've get this exception: NoClassDefFoundError: Could not initialize class org.bouncycastle.operator.jcajce.OperatorHelper

This issue occurred because we used in our project other org.bouncycastle packages with a lower version. It works now after updating them to the same version then the used one in this package.

Glad to hear it, I was out of ideas for how to fix it!