Java.io.FileNotFoundException: <Percorso file in Windows>:ENOENT (No such file or directory)

di il
1 risposte

Java.io.FileNotFoundException: <Percorso file in Windows>:ENOENT (No such file or directory)

Ciao, sto creando un applicazione su android studio che mi permette, attraverso pubblicazione mqtt, di inserire dei valori all'interno di un database.
I problemi insorgono quando la mia connessione mqtt vuole essere criptata attraverso SSL con certificati personali. Senza scendere troppo nel dettaglio, ho provato a dare il corretto percorso assoluto (lavoro su Windows) per i miei certificati, ma quando il programma li utilizza alza l'eccezione FileNotFoundException. Ho provato svariati tentativi di risoluzione del problema senza però arrivare ad una conclusione benefica.
I miei tentativi sono stati i seguenti:
  • Ho pensato che il problema potesse essere relativo all'estensione del file (.crt), provando così con un file di testo (.txt) creato in quel momento per vedere se almeno lo leggesse ma non è stato così.

1 Risposte

  • Re: Java.io.FileNotFoundException: <Percorso file in Windows>:ENOENT (No such file or directory)

    allestreet124 ha scritto:


    Senza scendere troppo nel dettaglio, ho provato a dare il corretto percorso assoluto (lavoro su Windows) per i miei certificati, ma quando il programma li utilizza alza l'eccezione FileNotFoundException.
    options.setSocketFactory(SslUtil.getSocketFactory("C:\\Users\\User\\Desktop\\mosquitto\\cert-client\\ca.crt","C:\\Users\\User\\Desktop\\mosquitto\\cert-client\\client.crt", "C:\\Users\\User\\Desktop\\mosquitto\\cert-client\\client.key", "password"));
    Direi che l'approccio è proprio sbagliato. Non ha alcun senso che in una applicazione Android metti dei percorsi assoluti di Windows che oltretutto sono specifici della tua macchina.

    Quei file li devi "incapsulare" all'interno della applicazione Android. Così come una app Android può avere immagini, icone, layout, stringhe di traduzione, font, ecc... allora dovrai trattare anche quei file come "risorse".

    Le informazioni le trovi (e molte), es.:



    Bisogna solo vedere la API della security dei certificati di che cosa ha bisogno: di un InputStream? di un java.io.File? Altro?
    Basta documentarsi.

    EDIT: dalla documentazione ufficiale PEMParser si vede che richiede esclusivamente un java.io.Reader. Quindi qualunque cosa va bene da cui partire purché arrivi ad incapsularlo in un Reader (es. InputStreamReader).
Devi accedere o registrarti per scrivere nel forum
1 risposte