2016-07-10 11 views
0

私は自分のlocalhostを教育目的のためにsshjライブラリから提供されたクラスに接続しようとしています。上記のコードを書きましたが、new SSHClient.authPublickey(String userName,KeyProvider... keys)メソッドに問題があります.Iだけではなく、私もトレースしsshjライブラリあまりにも私のコードのすべての行をトレースしますが、私はエラーコードを与えるものuseful.I'mを見つけることができません、スタックトレースは、私のIDE(NetBeans 8.1)、私のソースコードと私のプロジェクトにインポートしたjarファイルから生成されました以下。NoClassDefFoundError 'new SSHClient.authPublickey(String、KeyProvider)'のメソッド

Jarファイル:(私は理由stackoverflowの評判拘束する2つの以上のリンクを共有することはできません)

1。 sshj-0.2.3.jar

2。 SLF4J-API-1.7.21.jarリンク= binary and source

3。 bcprov、bcpkix、bcpg、bcmail(JDK 1.5から1.8バージョンのファイル)リンク= Signed Jar Section

ソースコード:

SSHClient sshClient = new SSHClient();  
    sshClient.addHostKeyVerifier(new PromiscuousVerifier()); 
    sshClient.connect("localhost"); 
    File keyFile = new File(dir);//dir = directory of publickey file 
    KeyProvider pubkey = sshClient.loadKeys(keyFile.getPath(),pass);//pass = passphrase of the pubkey file 
    sshClient.authPublickey(uName, pubkey); //error occuring in this line 

エラーコード:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/bouncycastle/openssl/PEMReader 
    at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.readKeyPair(PKCS8KeyFile.java:114) 
    at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.getPublic(PKCS8KeyFile.java:71) 
    at net.schmizz.sshj.userauth.method.KeyedAuthMethod.putPubKey(KeyedAuthMethod.java:44) 
    at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:62) 
    at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:81) 
    at net.schmizz.sshj.userauth.method.AbstractAuthMethod.request(AbstractAuthMethod.java:63) 
    at net.schmizz.sshj.userauth.UserAuthImpl.tryWith(UserAuthImpl.java:236) 
    at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:89) 
    at net.schmizz.sshj.SSHClient.auth(SSHClient.java:204) 
    at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:304) 
    at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:323) 
    at Main.SignInFuncts.auth(SignInFuncts.java:29) 
    at Main.SignInFuncts.signIn(SignInFuncts.java:52) 
    at Main.SignIn.buttonSignInActionPerformed(SignIn.java:118) 
    at Main.SignIn.access$000(SignIn.java:6) 
    at Main.SignIn$1.actionPerformed(SignIn.java:56) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6516) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6281) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4872) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4698) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2719) 
    at java.awt.Component.dispatchEvent(Component.java:4698) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) 
    at java.awt.EventQueue.access$300(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:706) 
    at java.awt.EventQueue$3.run(EventQueue.java:704) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:720) 
    at java.awt.EventQueue$4.run(EventQueue.java:718) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.openssl.PEMReader 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 

スタックトレースラインがsshClientです。 authPublickey(uName、pubkey)

SSHClient.java 1.支店

public void authPublickey(String username, KeyProvider... keyProviders) 
      throws UserAuthException, 
        TransportException { 
     authPublickey(username, Arrays.<KeyProvider>asList(keyProviders)); 

スタックトレースラインauthPublickey(ユーザ名、 は、Arrays.asList(keyProviders))です。

SSHClient.java 2.ブランチ

public void authPublickey(String username, Iterable<KeyProvider> keyProviders) 
      throws UserAuthException, 
        TransportException { 
     final List<AuthMethod> am = new LinkedList<AuthMethod>(); 
     for (KeyProvider kp : keyProviders) 
      am.add(new AuthPublickey(kp)); 
     auth(username, am); 

認証(ユーザー名、午前);

SSHClient.java 3.ブランチ

私はまた、私はそれにエラーと同じことをしてみてくださいtoo.Ifパスフレーズで保護pubkeyでを持ってパスフレーズなしのssh-keygenはと私のSSH公開鍵を生成した
public void auth(String username, Iterable<AuthMethod> methods) 
      throws UserAuthException, TransportException { 
     assert isConnected(); 
     auth.authenticate(username, (Service) conn, methods);//exception thrown at this line 

まだ同じです。 他に必要なものがあれば、私はそれを共有する準備ができています。

答えて

0

あなたはorg.bouncycastle.openssl.PEMReaderためClassNotFoundErrorを取得しています。つまり、クラスパス上にBouncyCastleライブラリが見つかりませんでした。

それは、それを解読するためにあなたの公開鍵ファイルを読むためにPEMReaderを必要とします。

また、あなたは0.2.3で、古代のある、新しいsshjのバージョンにアップグレードしたい場合があります。

関連する問題