I'm creating an app with ftp ssh and in development mode it works correctly, when I compile it it gives me a series of errors, where am I going wrong?
B4X:
#AdditionalJar: bcprov-jdk15on-1.54
#AdditionalJar: bcpkix-jdk18on-1.84
#AdditionalJar: slf4j-api-1.7.7
#AdditionalJar: slf4j-simple-1.7.30
#AdditionalJar: eddsa-0.3.0
#AdditionalJar: sshj-0.37.0
Sub SFTP_Connect_SSHJ(Host As String, User As String, Password As String) As Boolean
Try
Dim ssh As JavaObject
ssh.InitializeNewInstance("net.schmizz.sshj.SSHClient", Null)
' Accetta tutte le chiavi host (equivalente StrictHostKeyChecking=no)
Dim verifier As JavaObject
verifier.InitializeNewInstance("net.schmizz.sshj.transport.verification.PromiscuousVerifier", Null)
ssh.RunMethod("addHostKeyVerifier", Array(verifier))
' Connessione
ssh.RunMethod("connect", Array(Host))
' Autenticazione
ssh.RunMethod("authPassword", Array(User, Password))
' Apertura SFTP
Dim sftpClient As JavaObject = ssh.RunMethod("newSFTPClient", Null)
' Salva riferimento globale
sFTP = sftpClient
sshClient = ssh
Return True
Catch
Log("Errore SSHJ: " & LastException)
Return False
End Try
End Sub
Sub SFTP_Upload(localFile As String, remoteDir As String, remoteFile As String) As ResumableSub
Try
Dim remotePath As String = _
IIf(remoteDir.EndsWith("/"), remoteDir.SubString2(0, remoteDir.Length - 1), remoteDir) _
& "/" & remoteFile
' opzionale: crea cartella
' SFTP_Mkdir(remoteDir)
sFTP.RunMethod("put", Array(localFile, remotePath))
Return True
Catch
Log("Errore upload: " & LastException)
Return False
End Try
End Sub
Sub SFTP_Disconnect
Try
If sFTP.IsInitialized Then
sFTP.RunMethod("close", Null)
End If
If sshClient.IsInitialized Then
sshClient.RunMethod("disconnect", Null)
End If
Catch
Log("Errore disconnect: " & LastException)
End Try
Error:
[JavaFX Application Thread] INFO net.schmizz.sshj.transport.random.JCERandom - Creating new SecureRandom.
[JavaFX Application Thread] INFO net.schmizz.sshj.common.SecurityUtils - Security Provider 'org.bouncycastle.jce.provider.BouncyCastleProvider' does not support necessary algorithm
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: MD5, provider: BC, class: org.bouncycastle.jcajce.provider.digest.MD5$Digest)
at java.base/java.security.Provider$Service.newInstance(Unknown Source)
at java.base/sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.base/sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.base/java.security.Security.getImpl(Unknown Source)
at java.base/java.security.MessageDigest.getInstance(Unknown Source)
at b4j/net.schmizz.sshj.common.SecurityUtils.registerSecurityProvider(Unknown Source)
at b4j/net.schmizz.sshj.common.SecurityUtils.register(Unknown Source)
at b4j/net.schmizz.sshj.common.SecurityUtils.getCipher(Unknown Source)
at b4j/net.schmizz.sshj.transport.cipher.BaseCipher.init(Unknown Source)
at b4j/net.schmizz.sshj.DefaultConfig.initCipherFactories(Unknown Source)
at b4j/net.schmizz.sshj.DefaultConfig.<init>(Unknown Source)
at b4j/net.schmizz.sshj.SSHClient.<init>(Unknown Source)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at b4j/anywheresoftware.b4j.object.JavaObject.InitializeNewInstance(Unknown Source)
at b4j/b4j.ClientsFtpFicr.main._sftp_connect_sshj(Unknown Source)
at b4j/b4j.ClientsFtpFicr.main._attivaconnessioni(Unknown Source)
at b4j/b4j.ClientsFtpFicr.main._appstart(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at b4j/anywheresoftware.b4a.BA.raiseEvent2(Unknown Source)
at b4j/anywheresoftware.b4a.BA.raiseEvent(Unknown Source)
at b4j/b4j.ClientsFtpFicr.main.start(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalAccessException: class java.security.Provider (in module java.base) cannot access class org.bouncycastle.jcajce.provider.digest.MD5$Digest (in module b4j) because module b4j does not export org.bouncycastle.jcajce.provider.digest to module java.base
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown Source)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.security.Provider.newInstanceUtil(Unknown Source)
... 37 more
[JavaFX Application Thread] INFO net.schmizz.sshj.common.SecurityUtils - BouncyCastle not registered, using the default JCE provider
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [[email protected]] disabled: No installed provider supports this key: javax.crypto.spec.SecretKeySpec
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [cast128-cbc] disabled: Cannot find any provider supporting CAST5/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [cast128-ctr] disabled: Cannot find any provider supporting CAST5/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [idea-cbc] disabled: Cannot find any provider supporting IDEA/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [idea-ctr] disabled: Cannot find any provider supporting IDEA/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent128-cbc] disabled: Cannot find any provider supporting Serpent/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent128-ctr] disabled: Cannot find any provider supporting Serpent/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent192-cbc] disabled: Cannot find any provider supporting Serpent/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent192-ctr] disabled: Cannot find any provider supporting Serpent/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent256-cbc] disabled: Cannot find any provider supporting Serpent/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [serpent256-ctr] disabled: Cannot find any provider supporting Serpent/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish128-cbc] disabled: Cannot find any provider supporting Twofish/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish128-ctr] disabled: Cannot find any provider supporting Twofish/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish192-cbc] disabled: Cannot find any provider supporting Twofish/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish192-ctr] disabled: Cannot find any provider supporting Twofish/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish256-cbc] disabled: Cannot find any provider supporting Twofish/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish256-ctr] disabled: Cannot find any provider supporting Twofish/CTR/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.DefaultConfig - Cipher [twofish-cbc] disabled: Cannot find any provider supporting Twofish/CBC/NoPadding
[JavaFX Application Thread] INFO net.schmizz.sshj.transport.TransportImpl - Client identity string: SSH-2.0-SSHJ_0.37.0
[JavaFX Application Thread] INFO net.schmizz.sshj.transport.TransportImpl - Server identity string: SSH-2.0-OpenSSH_for_Windows_9.5
[sshj-Reader-pubblica.ficr.it/195.231.69.170:22-1776462808823] ERROR net.schmizz.sshj.transport.TransportImpl - Dying because - Error constructing implementation (algorithm: X25519, provider: BC, class: org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519)
net.schmizz.sshj.common.SSHRuntimeException: Error constructing implementation (algorithm: X25519, provider: BC, class: org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519)
at b4j/net.schmizz.sshj.transport.kex.DHBase.<init>(Unknown Source)
at b4j/net.schmizz.sshj.transport.kex.Curve25519DH.<init>(Unknown Source)
at b4j/net.schmizz.sshj.transport.kex.Curve25519SHA256.<init>(Unknown Source)
at b4j/net.schmizz.sshj.transport.kex.Curve25519SHA256$Factory.create(Unknown Source)
at b4j/net.schmizz.sshj.transport.kex.Curve25519SHA256$Factory.create(Unknown Source)
at b4j/net.schmizz.sshj.common.Factory$Named$Util.create(Unknown Source)
at b4j/net.schmizz.sshj.transport.KeyExchanger.gotKexInit(Unknown Source)
at b4j/net.schmizz.sshj.transport.KeyExchanger.handle(Unknown Source)
at b4j/net.schmizz.sshj.transport.TransportImpl.handle(Unknown Source)
at b4j/net.schmizz.sshj.transport.Decoder.decode(Unknown Source)
at b4j/net.schmizz.sshj.transport.Decoder.received(Unknown Source)
at b4j/net.schmizz.sshj.transport.Reader.run(Unknown Source)
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: X25519, provider: BC, class: org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519)
at java.base/java.security.Provider$Service.newInstance(Unknown Source)
at java.base/sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.base/java.security.KeyPairGenerator.getInstance(Unknown Source)
at b4j/net.schmizz.sshj.common.SecurityUtils.getKeyPairGenerator(Unknown Source)
... 12 more
Caused by: java.lang.IllegalAccessException: class java.security.Provider (in module java.base) cannot access class org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519 (in module b4j) because module b4j does not export org.bouncycastle.jcajce.provider.asymmetric.edec to module java.base
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown Source)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.security.Provider.newInstanceUtil(Unknown Source)
... 16 more
[sshj-Reader-pubblica.ficr.it/195.231.69.170:22-1776462808823] INFO net.schmizz.sshj.transport.TransportImpl - Disconnected - UNKNOWN
[JavaFX Application Thread] ERROR net.schmizz.concurrent.Promise - <<kex done>> woke to: net.schmizz.sshj.transport.TransportException: Error constructing implementation (algorithm: X25519, provider: BC, class: org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519)
Errore SSHJ: (IllegalAccessException) java.lang.IllegalAccessException: class java.security.Provider (in module java.base) cannot access class org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519 (in module b4j) because module b4j does not export org.bouncycastle.jcajce.provider.asymmetric.edec to module java.base
Errore connessione SFTP