2016-07-24 31 views
0

Ich lerne Java aus einem Buch und bin im Kapitel über die Zugriffskontrolle. Die Übung fordert mich auf, eine Klasse in einem Paket zu erstellen und dann eine Instanz dieser Klasse außerhalb des Pakets zu erstellen.Was mache ich falsch beim Erstellen eines Java-Pakets und Importieren (Anfänger)?

Alle meine Dateien wurden in einem Ordner erstellt, befindet: Benutzer/myname/Desktop/java/Accesscontrol und ich bin auf einem Mac wenn es ankommt

ich eine Datei erstellt Person.java mit dieser Code:

package net.baumli.a; 

public class Person { 
    void welcome() { 
     System.out.println("A new person has entered the room, welcome."); 
    } 
} 

ich habe nicht einen Domain-Namen, damit ich net.mylastname nur verwendet, und erstellt, dass die Paketnamen in zufälliger Reihenfolge.

Dann habe ich die Datei AcTest.java

import net.baumli.a.Person; 

public class AcTest { 
    public static void main(String[] args) { 
     Person mike = new Person(); 
     mike.welcome(); 
    } 
} 

und dann kompilieren ich Javac AcTest.java und erhalten diese Fehler:

cTest.java:1: error: package net.baumli.a does not exist 
import net.baumli.a.Person; 
      ^

AcTest.java:5: error: cannot access Person 
       Person mike = new Person(); 
      ^

bad source file: ./Person.java 

file does not contain class Person 

Please remove or make sure it appears in the correct subdirectory of the sourcepath. 

2 Fehler

Muss ich ändere meine CLASSPATH Variable? Ich weiß es sagt meine Klasse ist nicht im richtigen Unterverzeichnis, aber wie bekomme ich es dort? Wenn ich einen Paketnamen erstelle, ist es in Ordnung, einen zufälligen Namen zu erstellen, oder muss ich ihn dem Verzeichnispfad zuordnen? Ich bin nur sehr verwirrt von der ganzen Situation. Jede Hilfe, die Sie geben könnten, wäre sehr willkommen!

+0

Dies ist eine dumme Frage, aber existieren die ordner "net", "baumli" und "a"? (die den Namen Ihrer Pakete anpassen) – jorgevasquezang

+0

Setzen Sie Person.java und AcTest.java in Benutzer/myname/Desktop/java/accessControl/net/baumli/a/- vorausgesetzt, Sie kompilieren mit der Befehlszeile, legen Sie Ihr Standardverzeichnis auf Benutzer/myname/Desktop/java/accessControl /. Führen Sie dann "javac net/baumli/a/AcTest.java" aus. Sie benötigen keine Klassenpfadvariable, es sei denn, es gibt andere Klassen, die irgendwo gefunden werden müssen. – arcy

Antwort

0

Verschieben Sie einfach Ihr Paketverzeichnis über Ihr Programmverzeichnis.

Ihr Programmverzeichnis C Lassen: \ Java \ AcTest.java

Dann Sie Ihr Paketverzeichnis wie C erstellen: \ Java \ net \ Baumli \ a \ Person