ubuntuusers.de

java - Programm in mehrere Dateien aufteilen

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

jeykey

Avatar von jeykey

Anmeldungsdatum:
22. August 2006

Beiträge: 280

Wohnort: Schwarzwald

Hallo, ich versuche schon seit einiger Zeit mein Programm in zwei Dateien aufzuspalten. Leider hat das noch nicht so gut geklappt.

Die zwei Dateien befinden sich im selben Ordner.

Datei 1 - "Jeyvoc.java"

import main;

public class Jeyvoc {
	public static void main(String[] args) {
		main.Main main = new Main();
		main.menue();
	}
}

Datei 2 - "Main.java"

package main;

class Main {
	void function() {
		System.out.println("hallo");
	}
}

Die Fehlermeldung

$ javac Jeyvoc.java && java Jeyvoc

Jeyvoc.java:1: '.' expected
import main;
           ^
Jeyvoc.java:1: ';' expected
import main;
            ^
2 errors

Ich hoffe ihr könnt mir helfen, Gruß jeykey

ryiden

Avatar von ryiden

Anmeldungsdatum:
2. Juni 2006

Beiträge: 826

Wohnort: Mos Eisley

Die Klasse Main ist nicht public. Es muss eine public class existieren, die wie die Datei heißt.

In der main-Methode von Jeyvoc solltest Du main.function() aufrufen statt main.menue().

Die Klasse Jeyvoc muss im selben Paket liegen wie die Klasse Main, da Du die Methode function() Package-Private deklariert hast:

Also entweder import main durch package main ersetzen, oder public void function() in Main.java schreiben.

jeykey

(Themenstarter)
Avatar von jeykey

Anmeldungsdatum:
22. August 2006

Beiträge: 280

Wohnort: Schwarzwald

ryiden schrieb:

Die Klasse Main ist nicht public. Es muss eine public class existieren, die wie die Datei heißt

danke, hab ich vergessen. Die Fehlermeldung bleibt allerdings ☹

ryiden

Avatar von ryiden

Anmeldungsdatum:
2. Juni 2006

Beiträge: 826

Wohnort: Mos Eisley

Sorry war noch nicht ganz fertig, momentan einen Gipsarm 😢

jeykey

(Themenstarter)
Avatar von jeykey

Anmeldungsdatum:
22. August 2006

Beiträge: 280

Wohnort: Schwarzwald

ryiden schrieb:

In der main-Methode von Jeyvoc solltest Du main.function() aufrufen statt main.menue().

Oh, dummer Fehler, vor lauter zusammenbasteln hab ich das wohl unterschlagen.

Die Klasse Jeyvoc muss im selben Paket liegen wie die Klasse Main, da Du die Methode Main.function() Package-Private deklariert hast: Also entweder import main durch package main ersetzen, oder public void function() in Main.java schreiben.

Hmmm... hab ich beides versucht. Fehlermeldung ist beides mal folgende:

Jeyvoc.java:5: cannot find symbol
symbol  : class Main
location: class main.Jeyvoc
                Main main = new Main();
                ^
Jeyvoc.java:5: cannot find symbol
symbol  : class Main
location: class main.Jeyvoc
                Main main = new Main();
                                ^
2 errors

line 5:

main.Main main = new Main();

Muss ich vielleicht die irgend so ein Classpath setzen, oder eine spezielle Ordnerstruktur anlegen? Benutz kein Eclipse, was das automatisch macht.

Sorry war noch nicht ganz fertig, momentan einen Gipsarm 😢

Hoffentlich nicht der rechte Arm 😬

Riddle

Avatar von Riddle

Anmeldungsdatum:
27. Juli 2007

Beiträge: 201

Wohnort: 127.0.0.1

Wenn man eine Klasse in ein Package stecken will muss man es in einem Unterordner ablegen der genau so wie das Package heißt. In diesem Fall also Main.java in einen Unterordner namens main stecken, dann sollte das funktionieren.

Obendrein muss man bei import-Anweisungen nicht das Package angeben, sondern die Klasse, also z.B.:

import main.Main;

Alternativ kann man auch alle Klassen eines Packages importieren mit:

import main.*;

jeykey

(Themenstarter)
Avatar von jeykey

Anmeldungsdatum:
22. August 2006

Beiträge: 280

Wohnort: Schwarzwald

Riddle schrieb:

Wenn man eine Klasse in ein Package stecken will muss man es in einem Unterordner ablegen der genau so wie das Package heißt. In diesem Fall also Main.java in einen Unterordner namens main stecken, dann sollte das funktionieren.

Obendrein muss man bei import-Anweisungen nicht das Package angeben, sondern die Klasse, also z.B.:

import main.Main;

Alternativ kann man auch alle Klassen eines Packages importieren mit:

import main.*;

😊 jetzt funktioniert es endlich.... dankeschöööööön. Auch wenn meine Fehler relativ banal erscheinen, sitz ich da jetzt schon ne ziemlich lange Zeit dran

Riddle

Avatar von Riddle

Anmeldungsdatum:
27. Juli 2007

Beiträge: 201

Wohnort: 127.0.0.1

Jeder fängt mal klein an 😉

Antworten |