Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    57

    [JAVA] JNLP accedere archivio JAR

    Salve a tutti,
    ho un problema......
    Ho creato un'applicazione java;dopo ho importato, come libreria, un archivio jar che contiene un file di testo (test.txt). Da questa applicazione con la seguente istruzione riesco ad accedere al file contenuto nell'archivio jar:

    InputStream fis = ClassLoader.getSystemClassLoader().getResourceAsSt ream("mio/file/test.txt");

    Dopo di ciò ho realizzato una jnlp, l'applicazione funziona ma non riesco più ad accedere al file di testo.
    Qualcuno mi saprebbe dire il motivo?????
    Con le jnlp devo eseguire qualche istruzione specifica???? O devo indicare un percorso specifico???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] JNLP accedere archivio JAR

    Originariamente inviato da cosemale
    Ho creato un'applicazione java;dopo ho importato, come libreria, un archivio jar che contiene un file di testo (test.txt). Da questa applicazione con la seguente istruzione riesco ad accedere al file contenuto nell'archivio jar:

    InputStream fis = ClassLoader.getSystemClassLoader().getResourceAsSt ream("mio/file/test.txt");

    Dopo di ciò ho realizzato una jnlp, l'applicazione funziona ma non riesco più ad accedere al file di testo.
    Mah ... bisognerebbe vedere cosa hai fatto di preciso. Cosa intendi per "ho importato, come libreria, un archivio jar"?? L'hai messa in "classpath"?

    Cioè, per capire, la tua applicazione sta in un file1.jar mentre quel file di testo sta in un file2.jar???

    Poi comunque sappi che in genere è più comodo usare getResource/getResourceAsStream di java.lang.Class.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    57
    Hai ragione....forse non mi sono spiegato bene!!!!

    L'applicazione da me realizzata è depositata su un server e distribuita sui vari client mediante javawebstart.
    Pertanto le varie classi e files sono compattati in dei file.jar; tali jar sono stati tutti firmati poichè ci sono delle classi che richiedono di accedere al file system locale e quindi il tag del file jnlp di avvio è stato impostato su .
    Fin qui nessun problema.
    Il dilemma sorge quando devo caricare da una classe una risorsa (un file di testo) presente su un jar differente da cui essa appartiene.
    b.jar!/ovi faccio vedere brevemente la struttura dei jar

    app.jar!/GUIobjects/*.class
    app.jar!/objects/*.class
    app.jar!/reports/*.txt

    mylib.jar!/GUIobjects/*.class
    mylib.jar!/objects/*.class

    Poichè la classe che deve caricare la risorsa si trova in
    mylib.jar!/objects/*.class
    e la risorsa da caricare in
    app.jar!/reports/*.txt
    non posso utilizzare InputStream is = getClass().getResourceAsStream(reports/file.txt)
    bensì
    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsSt ream(reports/file.txt)
    Se compilo ed eseguito da netbeans funziona. se invece faccio partire l'applicazione da javawebstart, mi diche che l'oggetto input stream è nullo ho infatti scorporato l'istruzione sopra per cercare di capire il problema
    --
    ClassLoader loader = ClassLoader.getSystemClassLoader();
    if (loader== null){
    System.out.println("no classloader");
    }
    else{
    InputStream is = loader.getResourceAsStream(filepath);
    if(is==null)
    System.out.println("no inputstream");
    -----------------
    Vorrei capire per quale motivo, l'unica differenza che c'è tra far avviare l'applicazione da netbeans e farla avviare tramite webstart, è che nel primo caso non si applicano i criteri di policy e nel secondo sì.Io però non credo sia un problema di policy, per 2 motivi
    1 - non mi da un errore perciso di accesso negato, tanto è vero che il classloader viene creato
    2 - i jar sono tutti firmati e il tag , come accennato prima è impostato su

    d'altro canto non può essere che il percorso della risorsa sia sbagliato altrimenti non riusciva a trovarla anche se avvio da netbeans.
    Aggiungo per finire che se modifico la struttura dei jar e metto i file da caricare nello stesso jar della classe che li carica, posso utilizzare il metodo getClass().getResourceAsStream() e in questo caso funziona tutto
    Voi cosa ne dite?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cosemale
    non posso utilizzare InputStream is = getClass().getResourceAsStream(reports/file.txt)
    Certo che puoi usarlo!! Devi solo specificare in modo opportuno il path, perché la tua classe che fa il caricamento è in un package. Dovresti mettere "../reports/file.txt"

    --> Loading Images Using getResource
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    57
    come mai nell'application funziona e nella jnlp no???????

    Ma i path nella jnlp sono diversi dall'application????

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Sorry, prima ho sbagliato a postare il path. Deve essere:

    "/reports/file.txt"
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    57
    non funziona!!!!

    Secondo te è un problema di policy????

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.