Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260

    Problemi con percorsi relativi dentro il progetto

    Buonasera a tutti,
    ho un problema che riguarda i percorsi relativi dentro la cartella del progetto.
    Praticamente sto creando la guida in linea del programma appena creato e avendola fatta in html+css la vorrei aprire con il browser di default tramite il comando
    codice:
    Desktop.getDesktop().browse(URI)
    Il problema che ho è che avendo messo tutti i file html e css dentro una cartella guida non riesco a raggiungere il file index.html contenuto nella cartella guida tramite il percorso relativo.
    Quello che faccio io è il seguente
    codice:
    Desktop.getDesktop().browse(new URI(.//guida//index.html));
    Soltanto che mi da un catch di tipo IOException in cui mi dice: impossibile trovare il file

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se la cartella "guida" viene impacchettata dentro al JAR, allora devi prima estrarla.
    Secondo me, comunque, il problema sta nel come hai scritto i percorsi. Se usi percorsi unix-like (quindi, con lo slash: "/" ) allora il separatore va messo singolo:

    codice:
    Desktop.getDesktop().open( new File("./guida/index.html") );

    Se, invece, hai usato percorsi windows-like (sconsigliato), allora va usato il backslash (che è un carattere speciale e va quotato, quindi messo doppio):


    codice:
    Desktop.getDesktop().open( new File(".\\guida\\index.html") );

    PS: immagino che le virgolette tu le abbia messe, altrimenti non compila nemmeno.
    PPS: spero che tu abbia capito perchè con i percorsi alla windows, il separatore va messo doppio.


    Ciao.
    Ultima modifica di LeleFT; 29-04-2014 a 16:36
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    codice:
    Desktop.getDesktop().browse(new URI(.//guida//index.html));
    No, non è comunque corretto/completo come URI.

    Il modo più semplice:

    codice:
    URI uri = new File("guida/index.html").toURI();
    (non c'è bisogno di mettere ./ all'inizio ... è già relativo alla directory "corrente").

    P.S. come ho detto, la specifica è relativa alla directory corrente e potrebbe non essere appropriato. Se sai e hai il controllo di quale è la directory corrente, ok.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Se la cartella "guida" viene impacchettata dentro al JAR, allora devi prima estrarla.
    Secondo me, comunque, il problema sta nel come hai scritto i percorsi. Se usi percorsi unix-like (quindi, con lo slash: "/" ) allora il separatore va messo singolo:

    codice:
    Desktop.getDesktop().open( new File("./guida/index.html") );

    Se, invece, hai usato percorsi windows-like (sconsigliato), allora va usato il backslash (che è un carattere speciale e va quotato, quindi messo doppio):


    codice:
    Desktop.getDesktop().open( new File(".\\guida\\index.html") );

    PS: immagino che le virgolette tu le abbia messe, altrimenti non compila nemmeno.
    PPS: spero che tu abbia capito perchè con i percorsi alla windows, il separatore va messo doppio.


    Ciao.
    Si si già sapevo del separatore alla Windows e il perché va messo doppio, perché il carattere \ è un carattere speciale dentro Java
    Inoltre preferirei avere un percorso compatibile con tutti i sistemi operativi

    Quote Originariamente inviata da andbin Visualizza il messaggio
    No, non è comunque corretto/completo come URI.


    codice:
    URI uri = new File("guida/index.html").toURI();
    (non c'è bisogno di mettere ./ all'inizio ... è già relativo alla directory "corrente").

    P.S. come ho detto, la specifica è relativa alla directory corrente e potrebbe non essere appropriato. Se sai e hai il controllo di quale è la directory corrente, ok.
    Si ho il controllo della cartella dato che le pagine html saranno inglobate all'interno della cartella del progetto.

    Do maggiori dettagli perché le strade forse possono essere diverse. Praticamente alla fine di tutto vorrei fare un eseguibile, che potrà essere eseguito su qualsiasi pc che abbia la JVM ovviamente (quindi Linux, Mac, Windows ecc);
    Inoltre ancora devo vedere se per creare un eseguibile devo partire da un jar o direttamente dalle cartelle e creare l'eseguibile, non ho ancora visto questa parte.
    A quanto ho capito per manipolare un file bisogna creare un flusso verso il determinato file tramite FILE e non tramite URI.

    Conviene utilizzare il metodo browse(URI) o il metodo open(FILE)?
    Ultima modifica di Fix87; 29-04-2014 a 18:00

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    Inoltre preferirei avere un percorso compatibile con tutti i sistemi operativi
    L'esempio che ho fatto io comunque è già di per sé indipendente dal S.O., cioè l'URI è corretto su qualunque S.O. (a parte, ripeto, poter sapere/controllare la directory corrente).

    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    Do maggiori dettagli perché le strade forse possono essere diverse. Praticamente alla fine di tutto vorrei fare un eseguibile, che potrà essere eseguito su qualsiasi pc che abbia la JVM ovviamente (quindi Linux, Mac, Windows ecc);
    Inoltre ancora devo vedere se per creare un eseguibile devo partire da un jar o direttamente dalle cartelle e creare l'eseguibile, non ho ancora visto questa parte.
    Per fare eseguibili "nativi" per applicazioni Java ci sono vari tools anche free (mai usati personalmente) e non so quanto effettivamente convenga. In Java un "eseguibile" è un .jar e questo è sufficiente per un JRE.

    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    A quanto ho capito per manipolare un file bisogna creare un flusso verso il determinato file tramite FILE e non tramite URI.
    Per manipolare pathname in generale, beh, chiaramente è meglio File. URI è più critico perché ha tutta una serie di regole ben precise.

    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    Conviene utilizzare il metodo browse(URI) o il metodo open(FILE)?
    Dalla documentazione javadoc:

    browse(URI uri)
    Launches the default browser to display a URI.

    open(File file)
    Launches the associated application to open the file.

    Nota anche la differenza sui parametri: open si aspetta un file sempre sul file-system locale. browse può aprire il browser anche con un URL su internet. (un URL è un caso particolare di URI)
    Ultima modifica di andbin; 29-04-2014 a 18:33
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Per fare eseguibili "nativi" per applicazioni Java ci sono vari tools anche free (mai usati personalmente) e non so quanto effettivamente convenga. In Java un "eseguibile" è un .jar e questo è sufficiente per un JRE.
    Su questa parte magari aprirò un thread a parte quando proverò a "chiudere" l'applicazione, non vorrei andare off-topic.

    Alla fine ho risolto con il seguente codice
    codice:
    Desktop.getDesktop().open(new File("html/index.html"));
    Grazie mille per le preziose informazioni come sempre.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.