Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Come creare un Package

  1. #1

    Come creare un Package

    Buongiorno,
    qualcuno mi spiega come si fa a creare uno o più package?
    ho provato l'esempio che c'è nel Tutorial della Sun http://java.sun.com/docs/books/tutor...questions.html
    (crea tre Package, Client, Server, Shared). Non funziona, quando tento di compilare Client mi dice che il Package Shared non esiste

    Grazie Marzio

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

    Re: Come creare un Package

    Originariamente inviato da mmorandi
    qualcuno mi spiega come si fa a creare uno o più package?
    I package sono più che altro una questione "strutturale". Se si usano i package, bisogna mettere all'inizio del sorgente (prima di qualunque import) la dichiarazione di package. Ma la cosa più importante da sapere è la regola fondamentale: i nomi dei package si devono sempre "riflettere" nella struttura delle directory. Se una classe Pippo è nel package com.prova, allora il file Pippo.class deve stare sotto un path com/prova. E in "classpath" va messa la directory che contiene la 'com'.
    E anche i sorgenti dovrebbero seguire tale struttura delle directory.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho creato la struttura
    c:\tmp\prova\mygame
    con le sottocartelle
    c:\tmp\prova\mygame\client
    c:\tmp\prova\mygame\server
    c:\tmp\prova\mygame\shared

    in ..\client ho messo Client.java
    in ..\server ho messo Server.java
    in ..\shared ho messo Utilities.java

    la CLASSPATH è C:\tmp\prova\mygame

    Utilities.java

    codice:
    package mygame.Shared;
    public class Utilities {
        // set DEBUG = false and compile to stop debug messages
        final static boolean DEBUG = true;
    
        public static void printMsg(String msg) {
    	if (DEBUG) {
    	    System.out.println(msg);
    	}
        }
    }
    La compilazione è OK

    Client.java

    codice:
    package mygame.client;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import mygame.Shared.*;
    
    
    public class Client extends Thread {
        Socket clientSocket = null;
    
        public Client(Socket s) {
    	clientSocket = s;
        }
    
        public void run() {
    	if (clientSocket == null) {
    	    return;
    	}
    
    	PrintStream out = null;
    
    	Utilities.printMsg("creating output stream");
    
    	try {
    	    out = new PrintStream(clientSocket.getOutputStream());
    	} catch (IOException e) {
    	    System.err.println("Error binding output to socket, " + e); 
    	    System.exit(1);
    	}
    
    	Utilities.printMsg("writing current date");
    
    	Date d = new Date();
    	out.println(d);
    
    	try {          
    	    out.close();
    	    clientSocket.close();
    	} catch (IOException e) {
    	}
        }
    
        protected void finalize() {
    	if (clientSocket != null) {
    	    try {
    		clientSocket.close();
    	    } catch (IOException e) {
    	    }
    	    clientSocket = null;
    	}
        }  
    }
    Quando compilo Client l'errore è Client.java:36: Package mygame.Shared does not exists

    Marzio

  4. #4
    prova a fare:

    Codice PHP:
    import mygame.Shared.Utilities

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da mmorandi
    c:\tmp\prova\mygame\shared

    import mygame.Shared.*;
    La cartella si chiama "shared" ma tu importi "Shared" :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mmorandi
    la CLASSPATH è C:\tmp\prova\mygame
    Visto che mygame è un package, è sbagliato! In classpath va messo C:\tmp\prova.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Originariamente inviato da Alex'87
    La cartella si chiama "shared" ma tu importi "Shared" :master:
    classico errore maiuscolo/minuscolo
    Ragazzi,usando import con l'asterisco, importa sempre le classi di quella specifica package?
    cioe' in questo caso:
    Codice PHP:
    import mygame.shared.*; 
    dove nel package "shared" abbiamo due classi: "classe1" e "classe2"....con questo import abbiamo importato le nostre due classi.
    E se avessimo un altro package sotto shared tipo "shared/newPackage" con una sua classe "classe3" e faccendo l'import di prima, ho fatto import anche della "classe3"?!

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da coocooche
    E se avessimo un altro package sotto shared tipo "shared/newPackage" con una sua classe "classe3" e faccendo l'import di prima, ho fatto import anche della "classe3"?!
    Facendo
    codice:
    import mygame.shared.*;
    importi tutte le classi/interfacce presenti in mygame/shared. Eventuali classi presenti in sotto-directory non vengono importate.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Scusate, le cartelle sotto mygame iniziano con maiuscolo
    ..mygame\Client
    ..mygame\Server
    ..mygame\Shared

    Ho provato anche con CLASSPATH C:\Tmp\Prova
    e
    import mygame.Shared.Utilities;

    Ma il risultato è sempre lo stesso

    Marzio

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Quando si posta del codice si devono usare gli apposit tag CODE, come previsto dal regolamento interno (punto 6).


    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

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.