2015-01-28 6 views
0

Spring boot использует старую версию CrashHub (crashub.version в POM), которая использует старую версию bouncycastle, использующую класс PemReader. Это противоречит последней версии bouncycastle, которую я использую в своем приложении. Можете ли вы обновить Spring Boot или есть работа, которую я могу сделать. Сейчас я получаю исключение ниже, когда я пытаюсь SSH в моем приложении:Весенняя загрузка с использованием более длинной поддерживаемой версии BouncyCastle (через CrashHub)

java.lang.NoClassDefFoundError: org/bouncycastle/openssl/PEMReader 
    at org.crsh.ssh.term.URLKeyPairProvider.loadKeys(URLKeyPairProvider.java:54) 
    at org.apache.sshd.common.keyprovider.AbstractKeyPairProvider.getKeyTypes(AbstractKeyPairProvider.java:53) 
    at org.apache.sshd.server.session.ServerSession.sendKexInit(ServerSession.java:127) 
    at org.apache.sshd.server.session.ServerSession.<init>(ServerSession.java:60) 
    at org.apache.sshd.server.session.SessionFactory.doCreateSession(SessionFactory.java:43) 
    at org.apache.sshd.common.session.AbstractSessionFactory.createSession(AbstractSessionFactory.java:38) 
    at org.apache.sshd.common.AbstractSessionIoHandler.sessionCreated(AbstractSessionIoHandler.java:36) 
    at org.apache.sshd.common.io.nio2.Nio2Acceptor$AcceptCompletionHandler.completed(Nio2Acceptor.java:128) 
    at org.apache.sshd.common.io.nio2.Nio2Acceptor$AcceptCompletionHandler.completed(Nio2Acceptor.java:109) 
    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) 
    at sun.nio.ch.Invoker$2.run(Invoker.java:218) 
    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.openssl.PEMReader 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:170) 
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:136) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 15 common frames omitted 

ответ

1

1.3.0 является последней версией Crashub и это версия, которая поддерживает Spring загрузки, так что нет ничего, что может быть сделано весной Боковая сторона вещей. Предполагая, что вы не хотите понижать свою зависимость от Bouncycastle, ваш единственный простой выбор - прекратить использование Crashub.

Более привлекательной альтернативой может быть вилка Crashub и внести необходимые изменения, чтобы она работала с вашей желаемой версией Bouncycastle.

+0

CRaSH использует bouncycastle '1.49', который был выпущен в июне 2013 года. Мы можем попытаться отскочить до' 1.50' или даже '1.5.1', но другие варианты использования, вероятно, сломаются. Это больше похоже на то, как Bouncycastle управляет обратной совместимостью своего API. –