Problem mit Packages

Status
Nicht offen für weitere Antworten.
H

Hi5

Gast
Habe folgendes Problem mit packages:
Meine erste Datei liegt im Verzeichnis .../instruments/meinUnterordner
und hat den folgenden code

Code:
package meinUnterordner; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 


public class CheckRenewalDates extends TimerTask 
{ 
  public void run() 
  ... 
}

meine 2te Datei liegt in ../instruments und hat den folgenden Code

Code:
package instruments; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 
import meinUnterordner.*; 


public class Timer_CheckUrls 
{ 
  public static void main( String args[] ) 
  { 
    Timer timer = new Timer(); 

    timer.schedule( new CheckRenewalDates(), 2000, 200000 ); 

  } 
}

Beim kompilieren beider Dateien bekomme ich keinen Fehler,
beim Aufruf von Timer_CheckUrls gibt das DOS FEnster allerdings folgendes aus:
Exception in thread "main" java.lang.NoClassDeFoundError: instruments/Timer_CheckUrls
Kann mir das nicht erklären die klasse ist doch definiert
 

bummerland

Top Contributor
wenn deine klasse CheckRenewalDates im unterordner /instruments/meinUnterordner liegt, muss dein package auch instruments.meinUnterordner heissen. versuch das mal.
 

Isaac

Bekanntes Mitglied
Das Problem mit Packages lese ich immer und immer wieder und oft werden Packages angegeben ohne das man sich begreiflich macht wozu sie eigentlich da sind oder woher die Struktur ruhrt (weiss nicht ob das nun bei dir auch so ist, aber im allgemeinen ist es halt so).

Packages spiegeln im Endeffekt nur die Verzeichnissstruktur (3 oder 2 s?) wieder. Wobei es ein definiertes Startverzeichniss gibt. Als Beispiel nehmen wir mal dein Projekt wobei ich mir den Pfad dorthin nun natürlich aus den Fingern gesaugt habe.

C:/Java/Projekte/Schule/Musik/instruments/meinUnterordner

Wenn du eine Datei im Verzeichniss Instruments mit der Package Anweisung "package instruments;" hast dann ist automatisch der Pfad "C:/Java/Projekte/Schule/Musik/" der Pfad von dem relativ alle Packageanweisungen abgehen müssen. Liegt also eine Datei in C:/Java/Projekte/Schule/Musik/instruments/meinUnterordner muss auch die Packageanweisung "package instruments.meinUnterordner;" lauten.

Es geht aber auch anders.

Hat die Datei im Verzeichniss instruments keine Packageanweisung dann ist sie im defaultpackage und alle Pfadanweisungen sind relativ zu instruments anzugeben. Beides funktioniert. Aber man darf sie nicht mischen. Wenn man sich den Pfad anschaut und einfach auf ein Verzeichniss den Finger hält, das das Defaultpackage sein soll ist die Packageanweisung kein Problem.

z.b. wären für deine 2 Dateien die packages

package Projekte.Schule.Musik.instruments.meinUnterordner;
package Projekte.Schule.Musik.instruments;

vollkommen legal. Lediglich das Defaultpackage hätte sich verschoben.
 
H

Hi5

Gast
Habe es mal ausprobiert also


Code:
package instruments.meinUnterordner; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 


public class CheckRenewalDates extends TimerTask 
{ 
  public void run() 
  ... 
}

liegt auch im Ordner ../instruments/meinUnterordner

und
Code:
package instruments; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 
import meinUnterordner.*; 


public class Timer_CheckUrls 
{ 
  public static void main( String args[] ) 
  { 
    Timer timer = new Timer(); 

    timer.schedule( new CheckRenewalDates(), 2000, 200000 ); 

  } 
}

liegt in ../instruments

jetzt bringt er mir aber beim Kompilieren schon den Fehler :package checkWebsites does not exist
import meinUnterordner.*;

ist doch irgendwie seltsam
 
G

Guest

Gast
Okay hatte noch ein Problem mit den passenden Ordner.
Jetzt wird das class file checkRenewalDates.class auch gefunden aber
trotzdem erhalte ich noch folgenden Fehler beim Kompilieren von
Timer_CheckUrls:

\instruments\Timer_CheckUrls.java:23: cannot access checkWebsites.CheckRenewalDates
bad class file: .\checkWebsites\CheckRenewalDates.class
class file contains wrong class: instruments.checkWebsites.CheckRenewalDates
Please remove or make sure it appears in the correct subdirectory of the classpath.
timer.schedule( new CheckRenewalDates(), 2000, 200000 );

was soll denn "contains wrong class" bedeuten. Die CheckRenewalDates.class Datei liegt
doch im Ordner instruments/checkWebsites
 

Isaac

Bekanntes Mitglied
Was ist denn daran seltsam? Ich habe geschrieben das man alle Pfade relativ zum "Startpfad" eingeben muss. Wenn du eine Klasse im Package instruments.meinUnterordner liegen hast dann muss die Importanweisung wie lauten?

import instruments.meinUnterordner.*; //Besser ist Allerdings nur explizit Klassen zu importieren und nicht *




Hi5 hat gesagt.:
Habe es mal ausprobiert also


Code:
package instruments.meinUnterordner; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 


public class CheckRenewalDates extends TimerTask 
{ 
  public void run() 
  ... 
}

liegt auch im Ordner ../instruments/meinUnterordner

und
Code:
package instruments; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 
import meinUnterordner.*; 


public class Timer_CheckUrls 
{ 
  public static void main( String args[] ) 
  { 
    Timer timer = new Timer(); 

    timer.schedule( new CheckRenewalDates(), 2000, 200000 ); 

  } 
}

liegt in ../instruments

jetzt bringt er mir aber beim Kompilieren schon den Fehler :package checkWebsites does not exist
import meinUnterordner.*;

ist doch irgendwie seltsam
 

Isaac

Bekanntes Mitglied
Same as above, Du hast sicher die Importanweisung relativ zum relativen Pfad angegeben. IMMER realtiv zum Startpfad also

NICHT

import checkWebsites.CheckRenewalDates;

SONDERN

import instruments.checkWebsites.CheckRenewalDates;


Anonymous hat gesagt.:
Okay hatte noch ein Problem mit den passenden Ordner.
Jetzt wird das class file checkRenewalDates.class auch gefunden aber
trotzdem erhalte ich noch folgenden Fehler beim Kompilieren von
Timer_CheckUrls:

\instruments\Timer_CheckUrls.java:23: cannot access checkWebsites.CheckRenewalDates
bad class file: .\checkWebsites\CheckRenewalDates.class
class file contains wrong class: instruments.checkWebsites.CheckRenewalDates
Please remove or make sure it appears in the correct subdirectory of the classpath.
timer.schedule( new CheckRenewalDates(), 2000, 200000 );

was soll denn "contains wrong class" bedeuten. Die CheckRenewalDates.class Datei liegt
doch im Ordner instruments/checkWebsites
 
G

Guest

Gast
Oh mann ich glaub langsam ich werde der Sache nicht ganz Herr.
Also das mit dem realtiven Pfad habe ich geschnallt.
Jetzt nocheinmal eine genaue Zusammenfassung:

Ordnerstruktur:

Ordner instruments
- Ordner: checkWebsites
- Datei: Timer_CheckUrls.class

Ordner checkWebsites
- Datei: CheckRenewalDates


So nun zum Code, der so mit Angabe des Pfades richtig sein müsste:

Code:
package instruments; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 
import checkWebsites.CheckRenewalDates;


public class Timer_CheckUrls 
{ 
  public static void main( String args[] ) 
  { 
    Timer timer = new Timer(); 

    timer.schedule( new CheckRenewalDates(), 2000, 200000 ); 

  } 
}



und
Code:
package instruments.checkWebsites; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 


public class CheckRenewalDates extends TimerTask 
{ 
  public void run() 
  ... 
}

folgende Fehlermeldung:
"\instruments\Timer_CheckUrls.java:6: cannot access checkWebsites.CheckRenewalDates
bad class file: .\checkWebsites\CheckRenewalDates.class
class file contains wrong class: instruments.checkWebsites.CheckRenewalDates
Please remove or make sure it appears in the correct subdirectory of the classpath.
import checkWebsites.CheckRenewalDates;"
 

Isaac

Bekanntes Mitglied
Du importierst

Code:
import checkWebsites.CheckRenewalDates;

Du definierst


Code:
package instruments.checkWebsites;

Schau dir beide Definitionen mal an. Wenn du dem folgst was ich gesagt habe, alle Definitionen und imports beziehen sich auf eine gemeinsame Basis, müssten beide, import und definition, mit dem selben Verzeichniss beginnen. Das ist aber nicht der Fall.


import instruments.checkWebsites.CheckRenewalDates;


und es sollte gehen.
 
G

Guest

Gast
Okay dann müsste es doch so funktionieren:

Code:
package instruments; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 
import instruments.checkWebsites.CheckRenewalDates; 


public class Timer_CheckUrls 
{ 
  public static void main( String args[] ) 
  { 
    Timer timer = new Timer(); 

    timer.schedule( new CheckRenewalDates(), 2000, 200000 ); 

  } 
}


und
Code:
package instruments.checkWebsites; 

import java.util.*; 
import java.text.*; 
import java.lang.*; 


public class CheckRenewalDates extends TimerTask 
{ 
  public void run() 
  ... 
}

das ist aber leider nicht der Fall.
Die Fehlermeldung beim kompilieren von Timer_CheckUrls lautet dann:
"\instruments\Timer_CheckUrls.java:6: package instruments.checkWebsites does not exist
import instruments.checkWebsites.CheckRenewalDates;"[/code]
 

Isaac

Bekanntes Mitglied
Dann wirst du warscheinlich javac falsch aufrufen. Stellen wir uns mal vor du hast ein Pfad

c:\Projekte\Java\Musik\src\instruments

Dann ist ja c:\Projekte\Java\Musik\src

ja dein default Classpath package.


Versuch mal

javac -classpath c:\Projekte\Java\Musik\src c:\Projekte\Java\Musik\src\instruments\Timer_CheckUrls.java


Damit weiss javac wo die Datei liegt die du kompilieren willst und zu welchem Pfad relativ er die Packageanweisungen interpretieren soll.
 
H

Hi5

Gast
Alles klar jetzt klappt es endgültig.
Vielen Dank für die geduldige Hilfestellung :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M problem mit packages - falsche einstellungen? Allgemeine Java-Themen 2
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
J "Problem Objektorientierung" Allgemeine Java-Themen 20
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
RalleYTN META-INF/services Problem Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben