2016-07-10 21 views
0

Ich versuche, meine localhost mit Klassen, die von sshj Bibliothek zur Verfügung gestellt für Bildungszwecke. So schrieb ich den Code oben, aber es gibt ein Problem bei new SSHClient.authPublickey(String userName,KeyProvider... keys) Methode .Ich verfolgte jede Zeile meines Codes nicht nur meine auch sshj Bibliothek zurückverfolgt, aber ich kann nichts nützliches finden.Ich gebe Fehlercodes, Stack-Trace von meiner IDE generiert (NetBeans 8.1), meinen Quellcode und die importierten Gläser in mein Projekt unten.NoClassDefFoundError in 'neue SSHClient.authPublickey (String, KeyProvider)' Methode

Jar-Dateien: (Ich kann nicht mehr als 2 Links teilen, weil der Ruf Stackoverflow beschränke)

1. sshj-0.2.3.jar

2. slf4j-api-1.7.21.jar Verbindung = binary and source

3. bcprov, bcpkix, bcpg, bcmail (jdk 1,5-1,8 Version Dateien) link = Signed Jar Section

Source Code:

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 

Fehlercode:

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) 

Stack Trace Line ist sshClient. authPublickey (uName, Pubkey)

SSHClient.java 1. Zweig

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

Stack Trace Line ist authPublickey (Benutzername, Arrays.asList (keyProviders));

SSHClient.java 2. Zweig

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); 

Auth (Benutzername, sind);

SSHClient.java 3. Zweig

public void auth(String username, Iterable<AuthMethod> methods) 
      throws UserAuthException, TransportException { 
     assert isConnected(); 
     auth.authenticate(username, (Service) conn, methods);//exception thrown at this line 

ich meine öffentlichen SSH-Schlüssel mit ssh-keygen ohne Passwort generiert haben auch habe ich Passwort geschützt pubkey too.If ich mit ihm das Gleiche versuchen Fehler Stills das gleiche. Wenn andere Dinge benötigt werden, ich bin bereit zu teilen, sag es einfach.

Antwort

0

Sie erhalten eine ClassNotFoundError für org.bouncycastle.openssl.PEMReader. Dies bedeutet, dass die BouncyCastle-Bibliotheken nicht im Klassenpfad gefunden werden konnten.

Der PEMReader muss Ihre öffentliche Schlüsseldatei lesen, um sie zu entschlüsseln.

Auch möchten Sie vielleicht auf eine neuere Version von Sshj aktualisieren, 0.2.3 ist uralt.