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

    non mi trova l'ini esterno al jar

    salve ragazzi, sto veramente impazzendo da giorni,vi prego aiutatemi. sto facendo un progetto per l'università e ho convertito l'applicazione in un applet.tutto sembrava funzionare se non fosse per il famoso file .ini dove ho settato il server e la porta per collegarsi al server. ovviamente ho dovuto spostare questo file fuori dal jar, perchè do la possibilità di cambiare server e quindi questo file va modificato.
    ma questa è una cosa successiva, perchè quando vado ad eseguire l'applet, questa non riesce a collegarsi perchè sembra nn trovare il file.
    Le ho provate tutte, ho cambiato metodi di lettura,percorsi,manifest,firma dell'applet, ma niente. non so + che pesci prendere.

    attualmente la riga dove dovrebbe prendere il file è questa

    ObjectInputStram inStream = new ObjectInputStream(new FileInputStream("config.ini");

    questo ini in pratica è nella stessa directory del jar.
    ps:da notare che nel progetto in Eclipse tutto funziona!!!
    suggerimenti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Un applet quando viene eseguita, viene scaricata nella cache del client. Qualsiasi riferimento a file situati nel server generano errore (anche se nel tuo caso il computer e' lo stesso, si comporta come se fossero due pc diversi collegati via rete). Se le info non sono "critiche" (password o altri dati da nascondere), potresti rendere disponibile il file sul web come fosse una pagina html, aprire da dentro l'applet una socket verso il suo indirizzo e leggere il file tramite la socket.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema non nasce solo perchè tenti di caricare un file che non esiste (quella riga di codice cerca il file in locale sul client, ma anche perchè nessuna applet (senza firma) può accedere alle risorse del client.

    Ciao.
    "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

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    In definitiva, dalla tua (J)Applet devi recuperare l'AppletContext

    http://java.sun.com/javase/6/docs/ap...etContext.html

    E da quello leggi il file (con le restrizioni del caso di cui si parlava) con getStream
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    grazie raga ho risolto
    -----------------------------------

  6. #6
    raga un piccolo accorgimento, ho risolto il problema del path in pratica passando dall'html il parametro location.href e poi trattandolo da codice levando la parte finale e aggiungendo il config.ini in modo tale da puntarlo esattamente ed in locale aprendo la pagina html funziona tutto, in qualsiasi cartella metta la pagina e l'applet e l'ini.
    x curiosità ho provato a metterlo nel mio inetpub (server web iis) e ad aprirlo col mio ip sul browser ma pur prendendo il percorso esatto non entra nel file e nn legge il parametro.
    da cosa puo' dipendere? dal metodo di scrittura?

    mi è venuto di provare questa cosa, in modo tale da pubblicare il file e farlo provare a chiunque, ma qua nn è roba di connessione fallita, ma nn entra proprio nel file, infatti mi da file input errore, che nel mio catch significa che il formato dentro il file è errato, pero' in locale funziona quindi il file sta bene.
    per meglio comprendere l'ini è strutturato cosi':
    serverURL=127.0.0.1
    port=6502
    e il programma vede il valore dopo l'uguale.
    -----------------------------------

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non ho capito granche'. Puoi rispiegare meglio?
    Per file cosa intendi? L'ini? L'applet? Un jar contenente l'applet?
    Forse sarebbe il caso di postare anche la parte critica di codice per identificare meglio il problema.

  8. #8
    per file intendo l'ini.
    cmq questa è la classe principale

    public void start()
    {


    CCAppletClient frame = new CCAppletClient();
    frame.init();

    String nomehost = getParameter("hostname");
    nomehost = nomehost.substring(0, nomehost.lastIndexOf('/'));
    nomehost = nomehost.substring(0, nomehost.lastIndexOf('/'));
    //controlla se il protocollo è http o file-----------------
    boolean a = nomehost.startsWith("file:///");
    boolean b = nomehost.startsWith("http://");
    if (a) {
    nomehost=nomehost.substring(8,nomehost.length());;
    }
    if (b) {
    nomehost=nomehost.substring(0,nomehost.length());;
    }
    //---------------------------------------------------------

    if (nomehost.contains("%20")){

    nomehost = nomehost.replace("%20", " ");
    }
    CCClient.setHost(nomehost);
    if (!CCClient.getInstance().isStablishedConnection()) {
    JOptionPane.showMessageDialog(null,"Collegamento al server fallito!");
    Visualizza.setEnabled(false);
    Operazioni.setEnabled(false);
    lblStato.setText("Server Address: disconnected..");
    }else{
    lblStato.setText("Server Address: " + CCClient.getAddress());
    }


    }


    e qui è l'altra dove verifica il collegamento


    public static void setHost(String nomehost)
    {
    hostname = nomehost;
    }

    public boolean isStablishedConnection() {
    try {
    URL resource = getClass().getResource(hostname+"/config.ini");
    Socket socket = new Socket(IniFile.readParameter(hostname+"/config.ini", "serverURL"), Integer.valueOf(IniFile.readParameter(hostname+"/config.ini", "port")));
    setAddress(IniFile.readParameter(hostname+"/config.ini", "serverURL"));
    socket.close();
    } catch (NumberFormatException e) {
    return false;
    } catch (Exception e) {
    return false;
    }
    return true;
    }


    ripeto se apro il file normalmente funziona, se invece digito http://mioip/applet/applet.html non si collega. eppure ho provato a stampare quell'hostname nell'alert ed è giusto
    -----------------------------------

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ma iniFile cos'e'? Il file e' caricato correttamente?
    Nel try-catch cerca di stampare in qualche modo il messaggio di eccezione o lo stacktrace per avere piu' informazioni sul motivo del malfunzionamento.

  10. #10
    si scusa. IniFile è una classe con questi metodi

    public static int writeParameter(String filename, String param, String value)
    throws Exception {
    FileOutputStream out; // declare a file output object
    PrintStream p; // declare a print stream object
    int result = 0;
    List<String> bufferOut = new ArrayList<String>();
    String newLine = "";

    try {
    // Open the file that is the first
    // command line parameter
    FileInputStream fstream = new FileInputStream(new File(filename));



    // Convert our input stream to a
    // DataInputStream
    DataInputStream in = new DataInputStream(fstream);

    // Continue to read lines while
    // there are still some left to read
    while (in.available() != 0) {
    newLine = in.readLine();
    // Print file line to screen
    if (newLine.startsWith(param)) {
    String left = "";
    StringTokenizer tokenS = new StringTokenizer(newLine, "=");
    if (tokenS.hasMoreTokens()) {
    left += tokenS.nextToken().trim() + "=" + value;
    newLine = left;
    }
    }
    //System.err.println("Line append : " + newLine);
    bufferOut.add(newLine);

    }
    in.close();
    try {
    // Create a new file output stream connected to "myfile.txt"
    out = new FileOutputStream(filename);
    // Connect print stream to the output stream
    p = new PrintStream(out);
    for (String element : bufferOut) {
    p.println(element.toString());
    }
    p.close();
    } catch (Exception e) {
    System.err.println("Error writing to file");
    }
    } catch (Exception e) {
    System.err.println("File input error");
    }
    return result;
    }

    public static String readParameter(String filename, String param)
    throws Exception {
    FileOutputStream out; // declare a file output object
    PrintStream p; // declare a print stream object
    String value = "";
    List<String> bufferOut = new ArrayList<String>();
    String newLine = "";

    try {
    // Open the file that is the first
    // command line parameter
    FileInputStream fstream = new FileInputStream(new File(filename));
    // Convert our input stream to a
    // DataInputStream
    DataInputStream in = new DataInputStream(fstream);

    // Continue to read lines while
    // there are still some left to read
    while (in.available() != 0) {
    newLine = in.readLine();
    // Print file line to screen
    if (newLine.startsWith(param)) {
    String right = "";
    right = newLine.substring(newLine.lastIndexOf("="));
    value = right.substring(1);

    }
    //System.err.println("Line append : " + newLine);
    }
    in.close();
    } catch (Exception e) {
    System.err.println("File input error");
    }
    return value;
    }



    il file è caricato correttamente nella dir del jar. ti ho detto che ho tutto in una dir sotto Inetpub/wwwroot/ del web server cosi' posso aprirla sotto il mio ip. se la apro cosi' con l'indirizzo che ti ho scritto, nella java console esce File Input Error 2 volte(quando nn trova il server e la porta). se clicco direttamente sul file per aprirlo normalmente, va tutto liscio.
    è come se quando viene aperto col protocollo http nn riesce a leggere dentro il file, o cambiasse il modo di lettura. booo.
    che stringhe mi consigli di usare nel try/catch?
    -----------------------------------

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 © 2026 vBulletin Solutions, Inc. All rights reserved.