Anfängerprogramm

Status
Nicht offen für weitere Antworten.
J

Jedi84

Gast
Hallo,

ich habe gerade eine Klasse aus einem Buch abgetippt, sie compiliert und wollte dann dasselbe mit dem kleinen Programm dazu machen, funktioniert aber nicht...

hier die Datei WPoint.java:

Code:
public class WPoint {

static int Anzahl=0;
static java.awt.Color defaultColor=java.awt.Color.black;

double x,y;
boolean isVisible;

public WPoint()
{
  this.x=0.0;
  this.y=0.0;
  this.isVisible = false;
  WPoint.Anzahl++;
}

public WPoint(double x, double y)
{
  this.x = x;
  this.y = y;
  this.isVisible = true;
  WPoint.Anzahl++;
}

protected void finalize()
{
  WPoint.Anzahl--;
}

public static int anzahlElemente()
{
  return Anzahl;
}

public void hide()
{
  this.isVisible = false;
}

public void show()
{
  this.isVisible = true;
}

public void move (double x, double y)
{
  this.x = x;
  this.y = y;
}

public void movelo (double x, double y)
{
  this.x = this.x + x;
  this.y = this.y + y;
}

public double getX() {return this.x;}
public double getY() {return this.y;}
public boolean stat() {return this.isVisible;}
}
------------------------------------------------
Jetzt die Datei Prg1.java:
Code:
import java.lang.*;

public class Prg1{

  public static void main (String argv[]) {
    WPoint meinPunkt = new WPoint(0.5,0.9);
    System.out.print(meinPunkt.getX() + ", ");
    System.out.print(meinPunkt.getY() + "\n");
  }
}


Weiß einer wo der Fehler liegt? Der Compiler sagt "Prog1.java:6: Class WPoint not found in type declaration...

Danke schonmal!
 

Anubis

Bekanntes Mitglied
Mal ein Tip vorweg: java.lang brauct nicht importiert zu werden. :)

Liegen die beiden dateien WPoint.java und Prog1.java im selben Verzeichniss?
Wenn nicht kopiere oder Verschiebe die beiden Datein in ein gemeinsames Verzeichniss.
 
J

Jedi84

Gast
Wie gesagt, ist nur abgeschrieben...

Die Dateien liegen aber im selben Verzeichniss - inzwischen ja auch eine WPoint.class
 

Anubis

Bekanntes Mitglied
Komisch. Ich habe mir mal den obrigen Code ion eine WPoint.java kopiert und den untern in eine Prg1.java

Beim kopmilieren gab es keine Probleme.
Dann Überprüfe Mal die Klassen- und Dateinamen genaustens. Vielmerh weis ich da auch nicht. Normalerweise müsste es so funktionieren.
 
J

jedi84

Gast
Wie genau hast du denn kompiliert?
Oder muss man vor dem ersten kompilieren irgendwelche Einstellungen machen? Hab z.B. den classpath geändert...
 

Anubis

Bekanntes Mitglied
Wenn du unter Lin arbeitest, hast du so gut wie keine Probleme. Um unter Win zu proggen benutze ich immer den JCreatorLE. Damit habe ich auch deine Coden kompiliert.
Habe gerade auch per Eingabeauffporderung kompiliert. Auch keine Probleme.

Aber dass du den classpath geändert hast, könnte das Problem verursacht haben, setzt ihn mal zurück auf den ursrpungswert.
 
B

Beni

Gast
Ich bring da immer wieder ein altes Beispiel mit 2 Dateien: geht es so (musst natürlich Pfade und Dateinamen noch ändern :wink: )?

Im Ordner compile\src habe ich die beiden Dateien "Main.java" und "Call.java", mit den Inhalten:

Main.java
Code:
public class Main {
	public static void main( String[] args ){
		Call call = new Call();
		call.print();	
	}
}

Call.java
Code:
public class Call{
	public Call(){
	}
	public void print(){
		System.out.println( "hallo du da");
	}
}

So, und nun kompilieren und laufenlassen
// Inhalt des Ordners src:
E:\Dateien\Java\Projekte04\compile>dir src
Datenträger in Laufwerk E: ist DATEIEN
Volumeseriennummer: 2034-18FB

Verzeichnis von E:\Dateien\Java\Projekte04\compile\src

21.02.2004 18:04 <DIR> .
21.02.2004 18:04 <DIR> ..
21.02.2004 18:02 115 Main.java
21.02.2004 18:02 108 Call.java
2 Datei(en) 223 Bytes
2 Verzeichnis(se), 507'585'611 Bytes frei

// Kompilieren, der Ordner bin muss zuerst von Hand hergestellt werden!
E:\Dateien\Java\Projekte04\compile>c:\j2sdk1.4.2_01\bin\javac -d bin src\*.java

// Inhalt des Ordners bin
E:\Dateien\Java\Projekte04\compile>dir bin
Datenträger in Laufwerk E: ist DATEIEN
Volumeseriennummer: 2034-18FB

Verzeichnis von E:\Dateien\Java\Projekte04\compile\bin

21.02.2004 18:04 <DIR> .
21.02.2004 18:04 <DIR> ..
21.02.2004 18:13 393 Call.class
21.02.2004 18:13 306 Main.class
2 Datei(en) 699 Bytes
2 Verzeichnis(se), 507'584'512 Bytes frei

// Laufenlassen
E:\Dateien\Java\Projekte04\compile>cd bin

E:\Dateien\Java\Projekte04\compile\bin>java Main
hallo du da

E:\Dateien\Java\Projekte04\compile\bin>exit
 

Anubis

Bekanntes Mitglied
Also das kompilieren klappt schon, nur scheit die Java-Version sehr alt zu sein.
@jedi84: Welche Java-Version hast du?
 
J

Jedi84

Gast
Hab Version 1.1.8, wie war denn der Ursprungswert von classpath?
 

Anubis

Bekanntes Mitglied
Wenn du eine Uralte Version hats, dann würde ich den classpath vergessen und mir die neueste Runterladen, die zu finden ist.
Hier findest du die veriosn 1.4.2_05:
http://java.sun.com/j2se/1.4.2/download.html

Klicke auf "Download J2SE SDK", akzeptiere dann die Lizensvereinbarungen und klicke dann auf das Paket für dein OS. (Für Win32 empfele ich Offline Installation)
 
J

Jedi84

Gast
Hab das Beispiel durchgearbeitet (mein Programm lässt sich jetzt auch kompilieren), kann aber nichts starten.

D:\JDK\Work\bin>java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main

Im Verzeichnis Work befinden sich die Ordner src und bin, in src die *.java dateien und in bin die *.class dateien.

Was ist jetzt noch falsch?

PS: hab inzwischen die neue version istalliert
 
B

Beni

Gast
Versuch mal das: java Prg1 (es geht einfach um die *.class-Datei ohne das ".class", in welcher das "public static void main" steht).
 

Anubis

Bekanntes Mitglied
Das ist ganz simpel:
Du gehst in das verzeichnis, wo die .class Dateien sind und gibst folgendes ein: java [Klassenname].

Es wird dann die Mainmethode (pubpic static void main...) der KLasse [Klassenname] ausgeführt.

In deinem Programm wäre dass Prg1.
Also gib folgendes ein: java Prg1

---Edit: Mach für heute schluss
 
G

Gast

Gast
Mit java Prg1 erhalte ich den selben Fehler:
D:\JDK\Work\bin>java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main
 
J

Jedi84

Gast
hatte das falsche kopiert:
D:\JDK\Work\bin>Java Prg1
Exception in thread "main" java.lang.NoClassDefFoundError: Prg1
 
B

Beni

Gast
Nur mal für den geneigten Leser der noch Ideen hat: sein Progi wurde auf einem anderen System ausprobiert, und dort funktioniert es einwandfrei.
 

Anubis

Bekanntes Mitglied
Mal eine Checkliste:

Hast du beide .java dateien Kompiliert?
Sind die beiden .class Dateien im selben Verzeichniss?
Bist du vor der Ausführung deinen Programms in das entsprechende Verzeichniss gewechselt?
----------------------------

Wenn die beiden .class Dteien in dem Verzeichnis D:\JDK\Work\bin\ sind, dann mache folgendes:
Eingabeaufforderrung starten
Folgende Befehke eingeben:

Code:
D:
cd \JDK\Work\bin
java Prg1
 
B

Beni

Gast
@Anubis
Jedi hat das Problem noch im Chat gelöst, es war ein Problem des CLASSPATH's.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben