PDA

View Full Version : [JAVA]creare proprio package


MEMon
29-07-2006, 15:57
Ho tante classi, e vorrei ordinarle un po', quindi vorrei creare vari package.
Come si fa? Ho anche un libro ma non ho capito...

Vorrei avere le classi raggiugibili così:
import mionome.nomeprogetto.tipodiclasse.*;

Quindi ad esempio se ho una classe che mi svolge un servizio di rete vorrei renderla raggiungibile così:
import mioNome.nomeProg.NetWorking.*;

Cosa devo fare?
Se qualcuno mi spiega passo per passo come fare...considerando anche che poi il progetto deve essere trasportabile, cioè sarebbe meglio se fosse compilabile anche su di un'altra macchina...se possibile.

MEMon
29-07-2006, 16:31
Se per esempio metto le mie classi che svolgono servisi di rete nella cartella:
C:/progettoDIProva/mioNome/nomeProg/NetWorking

Come faccio a raggiungerla con un import?
Devo modificare anche il classpath?

cisc
29-07-2006, 16:51
prima cosa, ti consiglierei di usare eclipse, o un altro IDE che ti facilita la gestione dei progetti, cmq, innannzitutto devi creare la struttura dei package che desideri sul file system, esempio, se vuoi il package mionome.nomeprogetto.tipodiclasse devi creare una cartella mionome, in cui è presente una sottocartelle nomeprogetto, e così via..inoltre il classpath deve contenere il percorso della cartella contenente mionome, infine nelle classi che andrai a posizionare in "mionome.nomeprogetto.tipodiclasse", dovrai scrivere all'inizio:


package mionome.nomeprogetto.tipodiclasse;

MEMon
29-07-2006, 17:02
Grazie mille chiarissimo, ci sono riuscito!
Siccome si tratta di un progetto di esame, è probabile (non è sicuro) che il prof voglia compilare lui stesso i file java, in questo caso io dovrei cambiare il classpath del pc del prof?

cisc
29-07-2006, 17:12
io in genere ho sempre portato il jar già compilato, più i sorgenti a parte, ovviamente se il prof vuole compilarselo il classpath deve essere corretto....

MEMon
29-07-2006, 17:59
Altra cosa, come faccio a fare in modo che se importo un mio package automaticamente importo anche package della sun?

Ad esempio ho un package networking che contiene classi che fanno uso di java.net.*;
java.io.*;
java,utili.*;

c'è un modo per far si kè se importo il mio package importo anche quelli?

MEMon
29-07-2006, 18:11
Comunque ho cantato vittoria troppo presto, non dava errori di compilazione perchè i file java li compilavo nella cartella che contiene anche mionome, se il file si trova da un'altra parte non riesce a trovare il package, quindi significa che non ho settato bene il classpath.

Premetto che in variabili d'ambiente io NON ho nessun CLASSPATH, l'ho creato ma non è cambiato nulla, come faccio a spaere se va bene quello che ho fatto?

MEMon
29-07-2006, 21:33
utilizzo il JCreator, ho settato tutto e infatti mi trova i package, ma quando compilo una classe che contiene un oggetto di una classe all'interno del package mi dice che non è accessibile, tipo:
MasterServer.java
import mioprog.networking.*;

public class MasterServer {

public static void main(String[] args){
GestioneSocket gs;
}
}
GestioneSocket è una classe del package mioprog.networking, il quale viene correttamente trovato durante la compilazione, ma salta fuori però l'errore "cannot access GestioneSocket". Sembra un errore di visibilità ma tutte le classi nei package hanno visibilià pubblica...
Perchè? :confused: :mbe:

Preciso che i package sono in una cartella del tipo: C:\mionome\mioprog\netwoking
e che nel CLASSPATH ho messo C:\mionome
mentre invece il file MasterServer.java si trova in un altra cartella, quella che JCreator utilizza per i pregetti.

MEMon
29-07-2006, 21:44
Questo è l'output completo dell'errore:
C:\Programmi\Xinox Software\JCreatorV3LE\MyProjects\MasterServer\src\MasterServer.java:14: cannot access GestioneSocket
bad class file: C:\mionome\GestioneSocket.java
file does not contain class GestioneSocket
Please remove or make sure it appears in the correct subdirectory of the classpath.
GestioneSocket gs;
^
1 error

Process completed.

La cartella c:/mionome contiene la cartella dei package...
Sembra che non interpreti l'import dei package, in realtà il file class di GestioneSocket è in C:\mionome\nomeprog\networking e infatti ho messo l'import giusto...bho non capisco...

MEMon
29-07-2006, 21:48
Non ci credo...in pratica nella cartella C:\mionome c'era anche il file GestioneSocket.java e si vede che JCreator incontrando prima quello si fermava a quello nonostante fosse un java e non un class...certo che chi ha fatto l'algoritmo per compilare poteva anche guardare le estensioni dei file...