You are not logged in.

  • Login

1

Saturday, January 21st 2012, 12:13pm

Java-Ausführungs-Fehler

Guten Morgen,

bin recht 'neu' in der Java-Programmierung und würde gern etwas wahrscheinlich total simples fragen. Habe für eine Übung aus der Uni etwas geschrieben (ist noch nicht ganz fertig, aber bisher macht es, was es machen soll) und wenn ich es in Eclipse ausführe, tut es auch, was es tun soll. Da das Programm sehr viel auf der Konsole ausgibt, die Eclipse-interne Konsole jedoch bei zu vielen Zeichen oben den Zeilenpuffer löscht, würde ich es gerne in der normalen Konsole ausführen (Mac OS X). Durch Eingabe von

Bash

1
java Documents/workspace/ProgrammingCourse/src/exercises/Kuestenwache.java


erhalte ich folgende Fehlermeldung:

"Exception in thread "main" java.lang.NoClassDefFoundError: Documents/workspace/ProgrammingCourse/src/exercises/Kuestenwache/java
Caused by: java.lang.ClassNotFoundException: Documents.workspace.ProgrammingCourse.src.exercises.Kuestenwache.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)"

Erstmal das Programm:


Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package exercises;
import javax.swing.JOptionPane;
 
public class Kuestenwache {
 
	public static void main(String[] args) {
 
		//Erzeugen eines mehrdimensionalen Arrays
		String[][] nordsee = new String[965][645];
 
		//Initialisierung des mehrdimensionalen Arrays mit dem Zeichen '~'
		for (int i = 0; i < nordsee.length; i++) {
			for (int j = 0; j < nordsee[i].length; j++) {
				nordsee[i][j] = "~";
			}
		}
 
		int x = 0;
		int y = 0;
		while (x!= -1 && y!= -1) {
			try {
				String xString = JOptionPane.showInputDialog("Geben Sie eine x-Koordinate ein! (-1 zum Beenden)");
				String yString = JOptionPane.showInputDialog("Geben Sie eine y-Koordinate ein! (-1 zum Beenden)");
				x = Integer.parseInt(xString);
				y = Integer.parseInt(yString);
				nordsee[x][y] = "*";
			} catch (IndexOutOfBoundsException e) {
				if (x == -1 && y == -1) {
 
				}
				else {
					System.out.println("Bitte Geben Sie gültige Werte ein oder beenden Sie durch '-1'!");
					x = 0;
					y = 0;
				}
			}
		}
 
		for (int i = 0; i < nordsee.length; i++) {
			for (int j = 0; j < nordsee[i].length; j++) {
				System.out.print(nordsee[i][j]);
			}
			System.out.println();
		}
 
	}
 
}


Wisst ihr, woran das liegt und warum es in Eclipse jedoch funktioniert?

Lieben Gruß,
David

This post has been edited 1 times, last edit by "David" (Jan 21st 2012, 12:26pm)


2

Saturday, January 21st 2012, 12:16pm

weil du erst deine sourcen kompilieren musst und zwar mit dem befehl
javac und erst dann die kompilierten mit java ausführen.

3

Saturday, January 21st 2012, 12:25pm

Ach so, ja natürlich :) gesagt, getan und dann die Datei Kuestenwache.class ausgeführt, dennoch:

"Exception in thread "main" java.lang.NoClassDefFoundError: Kuestenwache/class
Caused by: java.lang.ClassNotFoundException: Kuestenwache.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)"

:(

4

Saturday, January 21st 2012, 12:29pm

na weil die datei bei dir in dem ordner exercises liegt und du wahrscheinlich nur Kuestenwache aufrufst, du musst mal mit den pfaden rumspielen, da habe ich auch immer das problem :D

5

Saturday, January 21st 2012, 12:33pm

das verstehe ich jetzt nicht :D naja mal schauen, ob ich das hinbekomme

6

Saturday, January 21st 2012, 12:38pm

Was auch wichtig ist: beim aufruf von java immer nur den Klassennamen ohne Dateierweiterung angeben... Also nicht

Bash

1
java Kuestenwache.java

sondern

Bash

1
java Kuestenwache


und wenn sich die Datei in einem Paket befindet, muss man das normal auch mit angeben:

Bash

1
java exercises/Kuestenwache

Social bookmarks