верблюд 2.21.0 - шифрование pgp не работает - PullRequest
0 голосов
/ 30 мая 2018

Пытаясь использовать новейшее pgp-шифрование camle, но, увидев ошибку Caused by: java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPPublicKeyRingCollection, я проверил, у меня есть правильные версии банок верблюдов и надувных замков на classpath, также пробовал с последней версией 1.59 до н.э.- я что-то пропустил?

mvn dependency:tree|egrep 'bcp|crypto'
[INFO] +- org.apache.camel:camel-crypto:jar:2.21.0:compile
[INFO] |  +- org.bouncycastle:bcpg-jdk15on:jar:1.57:compile
[INFO] |  +- org.bouncycastle:bcprov-jdk15on:jar:1.57:compile
[INFO] |  +- org.apache.camel:camel-crypto:jar:2.21.0:compile
[INFO] |  |  +- org.bouncycastle:bcpg-jdk15on:jar:1.57:compile
[INFO] |  |  +- org.bouncycastle:bcprov-jdk15on:jar:1.57:compile

Caused by: java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPPublicKeyRingCollection.<init>(Ljava/io/InputStream;Lorg/bouncycastle/openpgp/operator/KeyFingerPrintCalculator;)V
    at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKeys(PGPDataFormatUtil.java:204)
    at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKeys(PGPDataFormatUtil.java:96)
    at org.apache.camel.converter.crypto.PGPDataFormat.getEncryptionKeys(PGPDataFormat.java:235)
    at org.apache.camel.converter.crypto.PGPKeyAccessDataFormat.marshal(PGPKeyAccessDataFormat.java:222)
    at org.apache.camel.processor.MarshalProcessor.process(MarshalProcessor.java:69)

Тестовый маршрут:

  class DeadLetterChannelRoute1 extends RouteBuilder {

        @Override
        public void configure() throws Exception {
            from("file:source/inbox")
                    //.errorHandler(deadLetterChannel("file:source/dlc1").useOriginalMessage())
                    .process(exchange -> System.out.println( "1 >>> BEFORE:\n " + exchange.getIn().getBody(String.class)))
                    .marshal().pgp(encryptKeyFileName,encryptKeyUserid)
                    .process(exchange -> System.out.println( "1 >>> AFTER: \n" +  exchange.getIn().getBody(String.class)))
                    .to("file:source/pgp_inbox");
        }
    }

РЕДАКТИРОВАТЬ: Также проверено, что во время выполнения этиjars находятся в classpath: :~/.m2/repository/org/bouncycastle/bcpg-jdk15on/1.57/bcpg-jdk15on-1.57.jar:~/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.57/bcprov-jdk15on-1.57.jar:

Так что оказалось, что jdk-версия не была проблемой, но проблема заключалась в том, что мы переименовали старые jar-файлы bc в java-инсталляции $JAVA_HOME/jre/lib/ext dirс .out мы предполагали, что эти файлы не загружаются в classpath, но, похоже, они загружаются.Когда я полностью удалил эти старые jar из $JAVA_HOME/jre/lib/ext, все работает как с java 8 версий 121 и 172.

...