Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [java] inserimento valore variabile da esterno

    qual'è il modo giusto per inserire un parametro esternamente in java?

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

    Re: [java] inserimento valore variabile da esterno

    Originariamente inviato da nike_i6905
    qual'è il modo giusto per inserire un parametro esternamente in java?
    Dipende: se è una applicazione "standalone" i parametri da linea di comando (li trovi nel solito String[] che il main() riceve), se è una applet i parametri passati con <param name="..." value="..."> (li trovi con getParameter() di Applet).

    In ogni caso ci sono anche le system-property che si passano al runtime con l'opzione -D all'avvio (per le applet si impostano nel pannello di controllo Java).

    Altrimenti si possono usare file di configurazione o roba simile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho provato così:

    codice:
     BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
    
            String file = console.readLine();
    e pare vada bene...

    ma se volessi inserire il parametro come args del main come si manda in esecuzione il file compilato dalla riga di comando coni parametri?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nike_i6905
    ma se volessi inserire il parametro come args del main come si manda in esecuzione il file compilato dalla riga di comando coni parametri?
    java ClasseConMain arg1 arg2 arg3 ...

    Gli argomenti ovviamente sono stringhe e li hai nel String[] che il main riceve.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Mi dice che non mi trova la main class...

    Could not find the main class: Server.jar.

  6. #6
    Se è un jar lo avvii con java -jar Server.jar

  7. #7
    Si giusto e va bene, grazie

    ma mentre con il mio codice funziona
    con il metodo con args del main non funziona mi da errore...

    il codice client è questo

    codice:
    ....//invio messaggio
        System.out.println("Sending..." + args[0]);
        os.println(args[0]);os.flush();
    
        //stampa risposta dal server
        System.out.println("Attesa risposta dal server");
        String line=null;
    ....
    quello del server è questo

    codice:
     
    ....
                is=new BufferedReader(new InputStreamReader(client.getInputStream()));
                //DataInputStream ib=new DataInputStream(client.getInputStream());
                //is = new DataInputStream(ib);
                BufferedOutputStream ob=new BufferedOutputStream(client.getOutputStream());
                os= new PrintStream(ob,false);//per stampare il file
    
                //qui mi da errore...java.lang.NullPointerException
                String n=new String(is.readLine());
                
                System.out.println("File: "+ n);
                FileInputStream file=new FileInputStream(n);
    
                DataInputStream ifile=new DataInputStream(file);
                String r=null;
    ....

  8. #8
    Non hai specificato l'errore che ricevi.

    edit: era nel codice, scusa. Potresti linkare il progetto?

  9. #9
    Lato Server

    codice:
    package server5;
    import java.net.*;
    import java.io.*;
    
    public class Server {
      
        public static void main(String[] args)
            {        
            Socket client=null;
            ServerSocket server=null;
            try
                {
                server=new ServerSocket(11111);
                }
                catch(IOException e)
                    {
                    e.printStackTrace();
                    }
            while(true)
                {
                System.out.println("Attesa Connessione...");
                try
                {
                client=server.accept();
                }
                catch(IOException e)
                    {
                    System.out.println("connessione fallita");
                    System.exit(1);
                }
                System.out.println("Connessione da" + client);
                BufferedReader is=null;
                PrintStream os=null;
                try
                {
                is=new BufferedReader(new InputStreamReader(client.getInputStream()));
                BufferedOutputStream ob=new BufferedOutputStream(client.getOutputStream());
                os= new PrintStream(ob,false);//per stampare il file
                String n=new String(is.readLine());
    
                System.out.println("File: "+ n);
                FileInputStream file=new FileInputStream(n);
    
                DataInputStream ifile=new DataInputStream(file);
                String r=null;
                while((r=ifile.readLine())!=null)
                {
                os.println(r);
                }
                os.flush();os.close();is.close();client.close();
                }
                catch(FileNotFoundException e)
                {
                System.out.println("File non trovato");
                os.println("File non trovato");
                os.flush();os.close();
    
                }
                catch(Exception e)
                {
                e.printStackTrace();
                }
            }
    
            }
    
    }
    e lato Client

    codice:
     
    package client4;
    import java.io.*;
    import java.net.*;
    
    /**
     *
     * @author Alessandro
     */
    public class Client4 {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) 
        {
            // TODO code application logic here
        Socket s=null;
        BufferedReader is=null;
        PrintStream os=null;
        try
        {
            s = new Socket("localhost",11111);
            is = new BufferedReader(new InputStreamReader(s.getInputStream()));
            os = new PrintStream(new BufferedOutputStream(s.getOutputStream()));
    
        }catch(IOException e)
        {
        System.out.println(e.getMessage());
        System.exit(1);
        }
        //controllo argomenti
        if(args.length==0)
        {
            os.println("Missing name file!");
            System.out.println("Manca argomento");
            os.flush();os.close();
            return;
        }
        try
        {
        is.close();s.close();
        }
        catch(IOException e)
        {
        System.out.println(e.getMessage());
        }
    
        //invio messaggio
        System.out.println("Sending..." + args[0]);
        os.println(args[0]);os.flush();
    
        //stampa risposta dal server
        System.out.println("Attesa risposta dal server");
        String line=null;
        try
        {
        while((line=is.readLine())!=null)
        {
        System.out.println("Messaggio: "+ line);
        }
        is.close();os.close();s.close();
        }
        catch(IOException e)
        {
            System.out.println(e.getMessage());
        }
    
        }
    
    }

  10. #10
    Ho cercato di modificare il meno possibile. Le parti alterate le ho contrassegnate con un commento. In effetti c'era solo qualche piccola imperfezione che, ovviamente, non era legata all'utilizzo degli argomento da linea di comando. Prova a dare un'occhiata:

    Server
    codice:
    package server5;
    import java.net.*;
    import java.io.*;
    
    public class Server {
    
        public static void main(String[] args)
        {
            Socket client=null;
            ServerSocket server=null;
    
            try
            {
                server = new ServerSocket(11111);
            }
            catch(IOException e)
            {
                e.printStackTrace();
                //>> se non riusciamo a creare il server <<
                //>> è inutile continuare <<
                return;
            }
            while(true)
            {
                System.out.println("Attesa Connessione...");
                try
                {
                    client = server.accept();
                }
                catch(IOException e)
                {
                    System.out.println("connessione fallita");
                    System.exit(1);
                }
    
                System.out.println("Connessione da" + client);
                BufferedReader is = null;
                PrintStream os = null;
    
                try
                {
                    is = new BufferedReader(new InputStreamReader(client.getInputStream()));
                    BufferedOutputStream ob = new BufferedOutputStream(client.getOutputStream());
                    os = new PrintStream(ob,false);//per stampare il file
                    String n = new String(is.readLine());
    
                    System.out.println("File: " + n);
    
                    //>> readline di DataInputStream è deprecato <<
                    //>> utilizzo BufferedReader<<
                    FileReader file = new FileReader(n);
                    BufferedReader ifile = new BufferedReader(file);
                    String r=null;
    
                    while((r = ifile.readLine())!=null)
                    {
                        os.println(r);
                    }
    
                    os.flush();
                    os.close();
                    is.close();
                    client.close();
                }
                catch(FileNotFoundException e)
                {
                    System.out.println("File non trovato");
                    os.println("File non trovato");
                    os.flush();
                    os.close();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
    
        }
    
    }
    Client
    codice:
    package client4;
    import java.io.*;
    import java.net.*;
    
    /**
     *
     * @author Alessandro
     */
    public class Client4 {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args)
        {
            Socket s=null;
            BufferedReader is=null;
            PrintStream os=null;
    
            //controllo argomenti
            //>> lo faccio prima del resto però <<
            if(args.length==0)
            {
                System.out.println("Manca argomento");
                return;
            }
    
            try
            {
                s = new Socket("localhost",11111);
                is = new BufferedReader(new InputStreamReader(s.getInputStream()));
                os = new PrintStream(new BufferedOutputStream(s.getOutputStream()));
    
            }
            catch(IOException e)
            {
                System.out.println(e.getMessage());
                System.exit(1);
            }
        
            //>> Perchè li chiudi se dopo li utilizzi? <<
            /*
            try
            {
                is.close();
                s.close();
            }
            catch(IOException e)
            {
                System.out.println(e.getMessage());
            }
            */
    
            //invio messaggio
            System.out.println("Sending..." + args[0]);
            os.println(args[0]);
            os.flush();
    
            //stampa risposta dal server
            System.out.println("Attesa risposta dal server");
            String line=null;
            try
            {
                while((line=is.readLine())!=null)
                {
                    System.out.println("Messaggio: "+ line);
                }
    
                is.close();
                os.close();
                s.close();
            }
            catch(IOException e)
            {
                System.out.println(e.getMessage());
            }
    
        }
    }

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.