2
我正在使用BouncyCastle库:bcprov-jdk16-146.jar和bcpkix-jdk15on-1.54.jar。我试图运行下面的代码片段,最后一行抛出一个java.lang.NoSuchFieldError: gostR3410_94
我试图研究这个问题,但没有发现任何东西 - 我不知道为什么我得到这个问题?在DefaultSignatureAlgorithmIdentifierFinder
的静态初始化程序中发生错误。使用java8,我也在java.security中添加了bouncycastle作为我的安全提供者。bouncy castle DefaultSignatureAlgorithmIdentifierFinder NoSuchFieldError:gostR3410_94
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyPair kp = RSAKeyGenerator.generate2();
AsymmetricKeyParameter privateKey =
(AsymmetricKeyParameter) PrivateKeyFactory.createKey(kp.getPrivate().getEncoded());
AsymmetricKeyParameter publicKey =
(AsymmetricKeyParameter) PublicKeyFactory.createKey(kp.getPublic().getEncoded());
X500NameBuilder x500NameBld = new X500NameBuilder(RFC4519Style.INSTANCE);
x500NameBld.addRDN(RFC4519Style.c, "AU");
x500NameBld.addRDN(RFC4519Style.o, "The Legion of the Bouncy Castle");
x500NameBld.addRDN(RFC4519Style.l, "Melbourne");
x500NameBld.addRDN(RFC4519Style.st, "Victoria");
x500NameBld.addRDN(PKCSObjectIdentifiers.pkcs_9_at_emailAddress, "[email protected]");
X500Name subject = x500NameBld.build();
PKCS10CertificationRequestBuilder requestBuilder = new PKCS10CertificationRequestBuilder(subject, new SubjectPublicKeyInfo(ASN1Sequence.getInstance(kp.getPublic().getEncoded())));
DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
从javadocs:“通常,编译器会捕获此错误;如果类的定义发生了不兼容的更改,则只能在运行时发生此错误。”你是否在用反射和/或动态类加载进行一些有趣的事情? –
不是。这是充气城堡班的内部。但我已经想通了我的问题:我需要使用bcprov-jdk15on-1.54.jar - bcprov-jdk16-146.jar不兼容! – Nena
对不起,我完全错过了你的描述。是。请将此作为答案发布。 –