Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Problemi con i path su SO diversi

    Allora mi sono ritrovato davanti ad un problema che sinceramente non mi aspettavo.

    nella mia pplicazione carico e salvo nel seguente modo:
    codice:
    public void salvaAssociato() {
            if(MetodiUtilità.controllaSessione())return;
            try {
                File f = new File("archive/Associati.fjs");
                f.setWritable(true);
                FileOutputStream file = new FileOutputStream(f.getAbsolutePath());
                ObjectOutputStream output = new ObjectOutputStream(file);
                output.writeObject(this.listaAssociati);
                file.flush();
                file.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        public void caricaAssociato() throws ClassNotFoundException {
            FileInputStream file;
            try {
                file = new FileInputStream("archive/Associati.fjs");
                ObjectInputStream input = new ObjectInputStream(file);
                this.listaAssociati = (HashMap<String, Persona>) input.readObject();
                file.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                this.salvaAssociato();
            }
    
        }
    il che funziona benissimo su windows, mentre su unix no.

    il problema è al 99% il path...che su windows e su linux è "diverso", solo che non ricordo come risolvere questo problema...in pratica non ricordo come fare il check sul Sistema Operativo e in base a quello cambiare il loading dei file.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    onestamente non ho mai avuto ragione di fare quello che dici (il check del sistema operativo), specie quando lavoro sui file.

    Domanda: quale è l'errore?
    Il file esiste?
    Hai i permessi per accedervi? (come applicativo si intende)
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: Problemi con i path su SO diversi

    Originariamente inviato da franksisca
    in pratica non ricordo come fare il check sul Sistema Operativo
    puoi fare:

    codice:
    System.getProperty("os.name") e poi "os.version"

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Re: Problemi con i path su SO diversi

    Originariamente inviato da zipangulu
    puoi fare:

    codice:
    System.getProperty("os.name") e poi "os.version"
    ok e ci siamo, non ho capito come la gestione dell'IO e l'apertura di un file possa creare problemi da un sistema all'altro visto che applicazioni che girano sia su unix che su win che si riferiscono a file ne scrivo tutti i giorni

    anche se ha l'info del sistema operativo, come questa influisce sul pezzo di codice che ha scritto?

    al max il fatto che usa cartella/path, ma quando fa getAbsolutePath lo risolve (usato)
    RTFM Read That F*** Manual!!!

  5. #5
    il file ovviamente esiste ed è compilato.

    praticamente il programma carica questo file e ne visualizza il contenuto in una jlist. Se lo avvio dal mio terminale Windows non ho problemi, se invece lo avvio da Ubuntu 12.04 non mi carica i dati. non vorrei che fosse un errore di visualizzazione della JList, perchè appunto con l'absoluthe davo per scontato che si ricostruisse il path con il separatore del sistema operativo.

    Il programma lo avvio da jar, appena possibile vedo di avviarlo da console su ubuntu e vedo se dà qualche errore all'avvio nel loading dei dati...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    allora avvia da command line e dicci l'errore.
    In alcuni casi ho trovato path misti e sono stati correttamente risolti.

    Per sicurezza, anziché stare tu a chiederti dove sei, crea i path in questo modo

    codice:
    File f = new File("archive", "Associati.fjs");
    la jvm in modo indipendente crea per te il corretto path.
    La noia è farlo con tutto il path, ma come vedi in alcuni casi sei indipendente.
    Ricorda anche che da unix possono esserci problemi di permessi!!

    eccolo il path misto:
    codice:
    File logDir = new File(execDir + "/log");
    non mi ha mai dato problemi su unix o su win (unit-test che certificano la creazione, scrittura dentro quella dir, lettura del contenuto, cancellazione) per questo mi fa strano.
    RTFM Read That F*** Manual!!!

  7. #7
    questo è l'errore...sinceramente mi ero dimenticato che avevo inserito i look&feel e che dovessi controllarne la compatibilità con Ubuntu -.-

    Quindi credo che il problema sia semplicemente questo.
    codice:
    lug 04, 2012 9:52:45 AM gestioneassociatifederimprese.GestioneAssociatiFederimprese <init>
    Grave: null
    javax.swing.UnsupportedLookAndFeelException: [The Microsoft Windows Look and Feel - com.sun.java.swing.plaf.windows.WindowsLookAndFeel] not supported on this platform
     at javax.swing.UIManager.setLookAndFeel(UIManager.java:519)
     at javax.swing.UIManager.setLookAndFeel(UIManager.java:576)
     at gestioneassociatifederimprese.GestioneAssociatiFederimprese.<init>(GestioneAssociatiFederimprese.java:29)
     at gestioneassociatifederimprese.GestioneAssociatiFederimprese$1.run(GestioneAssociatiFederimprese.java:48)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
     at java.awt.EventQueue.access$000(EventQueue.java:101)
     at java.awt.EventQueue$3.run(EventQueue.java:666)
     at java.awt.EventQueue$3.run(EventQueue.java:664)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    per la creazione dei file come :
    codice:
    File f = new File("archive", "Associati.fjs");
    non ci avevo pensato proprio....buona idea per il futuro

    Ora la domanda è, tolgo il L&F incriminato oppure metto un check sull'OS e nel caso non sia supportato non lo faccio caricare? (opto per la seconda ma non sò se ci sono meccanismi adatti per fare ciò)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    il set del L&F è la prima cosa che fai, quindi cerca un L&F supportato ovunque oppure te ne porti dietro uno che sai funzionante ovunque
    Substance è un buon esempio (per dirne uno).

    Un'occhiata qui fossi in te la darei
    RTFM Read That F*** Manual!!!

  9. #9
    non mi ero reso conto che all'avvio del programma usavo il "WindowLookAndFeel"...credo che forse netBeans lo inserisca in automatico.

    Comunque sto verificando e mi sembra che succeda una cosa strana...se avvio il programma dal jar con il doppio click, su ubuntu, non mi carica il file, se invece lo avvio da terminale, mi carica i dati senza problemi.

    ulteriore info, il file jar è su un hard disk esterno condiviso in rete da una macchina che ha win7, mentre sto provando ad avviarlo da linux con i suddetti problemi, mentre da windows non dà assolutamente problemi. A cosa potrebbe essere attribuito questo problema(che a questo punto mi fà presuppore che il L&F non entrava in conflitto con il processo di loading dei dati, come è giusto che sia in effetti!!!)!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    il jar non si avvia con doppio click!!
    Il jar è un archivio di file .class per lo più, quindi lo si lancia con java -jar!!!!

    il resto onestamente non l'ho capito, ma mi chiedo...hai settato bene il classpath?
    RTFM Read That F*** Manual!!!

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.