Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57

    compilazione di più classi

    ciao a tutti eccomi di nuovo qui in effetti come da titolo dovrei compilare con netbeans un due classi ma ho un problema comunque ecco cosa ho fatto

    GradeBookTest

    codice:
    package java;
    
    //@author pippo
     
    public class GradeBookTest {
        
        public static void main(String args[]) {
            
            //crea un oggetto GradeBook e lo assegna alla variabile myGradeBook
            GradeBook myGradeBook = new GradeBook();
            
            //chiama il medoto displayMessage dell'oggetto myGradeBook
            
            myGradeBook.displayMessage();
           
        }
    }
    GradeBook per il metodo displayMessage

    codice:
    package java;
    
    public class GradeBook {
        
        //visualizzare un messaggio di benvenuto all'utente
        public void displayMessage() {
            
            System.out.println("Welcome to the grade book");
        }
        
    }
    quando compilo il progetto ecco l'output
    init:
    deps-jar:
    compile:
    To run this application from the command line without Ant, try:
    java -jar "/home/Crow/java/JavaApplication2/dist/JavaApplication2.jar"
    jar:
    BUILD SUCCESSFUL (total time: 0 seconds)
    come mai, la procedura è questa, ho fatto un nuovo progetto, poi in questo progetto ho fatto nuovo package lo chiamato java e in questo package ho creato queste due classi, penso che non ho commesso errori, ma il fatto che il mio output dovrebbe essere questo:
    Welcome to the grade book
    †NN PUò PIOVERE PER SEMPRE†

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Credo ci sia un po' di confusione. Se fai build, netbeans ti compila le classi(come il comando javac) e ti crea il file jar contenente tutto il progetto. Se invece fai run project, ti esegue il build, se ci sono state modifiche recenti, e poi ti avvia la main class.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    ciao simo7784 e grazie mille per la tua risposta, ma se faccio run
    mi da questa serie di errori di cui non capisco cosa vuole dire
    codice:
    deps-jar:
    compile:
    run:
    Exception in thread "main" java.lang.SecurityException: Prohibited package name: java
            at java.lang.ClassLoader.preDefineClass(ClassLoader.java:479)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
            at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)
    †NN PUò PIOVERE PER SEMPRE†

  4. #4
    Hai dichiarato le tue classi con package 'java', e questo non puoi farlo, perché il package java (e sotto-package) è riservato alle classi del JDK. Prova a cambiare il nome del package; mettici ad esempio 'package test;' ed esegui di nuovo.

    Ciao,

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    e questo non puoi farlo, perché il package java (e sotto-package) è riservato alle classi del JDK. Prova a cambiare il nome del package; mettici ad esempio 'package test;
    si si hai ragione grazie interarete sei stato gentilissimo, volevo solo chiedere
    codice:
    GradeBook myGradeBook = new GradeBook();
    in parole povere cosa fa esattamente, cioè myGradeBook che è di tipo Gradebook, viene initializzata con GradeBook(), bhè mi sapreste spiegare in parole povere cosa accade.
    †NN PUò PIOVERE PER SEMPRE†

  6. #6
    Quell'istruzione può essere scomposta nelle seguenti due:

    codice:
    GradeBook myGradeBook;
    myGradeBook = new GradeBook();
    Con la prima istruzione dichiari che la variabile myGradeBook è di tipo GradeBook, ma non gli assegni nessun valore, per cui il suo valore è null.
    Con la seconda istruzione istanzi un oggetto della classe GradeBook, chiamandone il suo costruttore di default (new GradeBook()) e lo assegni alla variabile myGradeBook.

    Ciao,

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    In parole povere non e' troppo immediato.
    Dovrebbe essere qualcosa del genere: Allora in un'area di memoria detta heap viene allocata una zona di memoria per la memorizzazione delle variabili del tuo oggetto e il suo tipo(Il nome della classe che sta nella parte a dx dell'uguale), praticamente l'istanza del tuo oggetto. In un'altra area di memoria sta invece un riferimento a quest'oggetto (come i puntatori in c, piu' o meno). Quando successivamente accedi all'oggetto con il suo nome, in realta' vai prima a leggere il reference che ti indirizza all'oggetto vero e proprio. Se non hai piu' reference all'oggetto nell'heap, java quando ne ha bisogno si riprende l'area di memoria.

    Ricapitolando in maniera grossolana:

    Classe (Tipo dell'oggetto, definisce i metodi invocabili)
    nome (il reference all'oggetto)
    =
    new SottoClasse() (Istanzia un nuovo oggetto SottoClasse, non Classe)

    Nota bene. SottoClasse dev'essere, o Classe, oppure estendere Classe. Il tipo da quando l'oggetto e' nello heap, diventa Classe quindi, senza castare l'oggetto, i metodi invocabili sono quelli di Classe (con il codice presente in SottoClasse se i metodi sono stati sovrascritti).

    E' un po' un casino, ma a parole povere dovrebbe essere circa cosi'... VVoVe:

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.