Spanish [Solucionado][B4J]Problema con java 11 y envio de correo

Dadaista

Active Member
Licensed User
Longtime User
Hola

Tengo una aplicación en la cual el usuario puede mandar correos con ficheros.

He instalado desde este post la version 6.80 BETA y me he bajado la version de java desde el mismo post.

Pongo el path en el IDE apuntando a java 11.

Corro la aplicación desde el IDE y me da un error de certificado al mandar el email.

Java Error.png

(Recuerdo que ya en su dia me tiré bastante tiempo para subsanar éste error. Ni recuerdo cómo solucioné el problema, pero se solucionó por fin y la aplicación mandaba correos normalmente.)

Copio el fichero jssecacerts desde el directorio de java 8 al directorio de java 11. Pruebo desde el IDE y voilá... no da error y el fichero que mando por correo me llega a mi correo... perfecto!!

Corro el B4JPackager11 en el IDE para poder hacer un archivo de instalacion. Modifico el script inno que genera B4JPackager11 y genero el setup el cual instalo.

Despues de instalar la aplicacion me voy a mandar el correo electrónico con uno de los ficheros y desafortunadamente, me vuelve a dar el error que os he puesto arriba.

@Erel me recomienda que pegue el archivo jssecacerts en el directorio bin que genera B4JPackager11 y que corra el fichero debug_run.bat sin crear el setup. Nada... pasa lo mismo, me da error.

Ésta es la salida que genera debug_run.bat
B4X:
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
        at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
        at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at b4j/org.apache.commons.net.smtp.AuthenticatingSMTPClient.performSSLNegotiation(Unknown Source)
        at b4j/org.apache.commons.net.smtp.AuthenticatingSMTPClient.execTLS(Unknown Source)
        at b4j/anywheresoftware.b4a.net.SMTPWrapper$1.run(Unknown Source)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at java.base/sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at java.base/sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at java.base/sun.security.validator.Validator.validate(Unknown Source)
        at java.base/sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
        ... 19 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
        at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
        at java.base/java.security.cert.CertPathBuilder.build(Unknown Source)
        ... 25 more
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Estoy un poco desconcertado... por qué funciona desde el IDE y si hago el setup con el B4JPackager11, no funciona?

Por qué funciona la instalacion hecha con B4JPackager y java 8 y con B4JPackager11 y java 11 no? aun copiando el fichero jssecacerts al directorio del 11?

La verdad que no entiendo nada. Estoy... que no estoy....:mad::mad:

He posteado tambien en "mi ingles" en el foro de B4J a ver si alguien controla y encuentra un por qué funciona en el IDE y desde el fichero de instalación no y encuentra una solución.

No tengo ni idea de que puedo hacer:oops::oops:
 

Dadaista

Active Member
Licensed User
Longtime User
Hay que copiar el archivo jssecacerts al directorio "temp/build/lib/security/" generado por el B4Jpackager11
 
Top