# javac zum Kompilieren von mehreren Dateien



## Djinndrache (2. Dez 2011)

ich hab eine Frage. Es ist mir für dieses Projekt strikt untersagt ein IDE zu verwenden, daher muss ich mit javac direkt kompilieren.

Wie kann ich mit javac aber mehrere Dateien für das selbe Projekt kompilieren?

Beispiel:

Film.java

```
package projectX;

class Film {
	String title;
}
```

Main.java

```
package projectX;

import projectX.Film;

class Main {
	
	public static void main(String[] args){
		Film x = new Film();
		x.title = "Kuchen";
		System.out.println("x heisst " + x.title);
	}
}
```

Wie kompiliere ich das jetzt, sodass ich dann die Main.class über den Javabefehl benutzen kann? Ich hab testweise einfach mal "javac *.java" gemacht, gab keine Fehler aus und hat zwei class-Dateien erstellt. Kann jedoch beide nicht ausführen, er findet jeweils die "main class" nicht.
Wenn ich die Dateien einzeln kompiliere kommt bei der Main bei jedem Vorkommen von "Film" (auch schon im Import) ein Fehler...

Was mach ich falsch?



[edit: typo fixed]


----------



## irgendjemand (2. Dez 2011)

das mit "javac *.java" ist soweit schon richtig ...
und das problem mit dem ausführen verstehe ich nicht *hier wäre mal der genau stack wichtig* ...
nur wenn du auf ner console bist musst du dich auch im richtigen pfad befinden

btw : wenn beide klassen im selben package sind musst du diese nicht importieren ...

bespiel

deine daten haben das package "project" ...
also müssen diese auch im entsprechenden ordner "project" innerhalb des aktuellen verzeichnisses befinden
dann musst du nur noch den richtigen pfad angeben


```
javac project\*.java
java project.Main
```

wenn du ohne eine IDE angefangen hättest java zu lernnen könntest du das auch

*genau das ist der grund warum ich der meinung bin : anfänger sollten die finger von IDE's lassen*


----------



## irgendjemand (2. Dez 2011)

aso .. habs noch vergessen

die klasse welche

```
public static void main(String[])
```
enthält muss natürlich public sein ...
also

```
public class Main
```

ansonsten ist es klar das er main nicht findet


----------



## Djinndrache (2. Dez 2011)

Danke dir, das hat geklappt. Hab versucht direkt im Package-Ordner dann "java Main" zu machen und das hat natürlich nicht funktioniert.

Ja, IDEs verwöhnen einen. Hab schon einige größere Projekte realisiert und jetzt kann ich mit der Konsole nichtmal ordentlich kompilieren...  Aber das hol ich ja jetzt nach 


Die class muss man übrigens nicht manuell auf public setzen, das geht auch ohne (ich glaube public ist Standard für classes, wenn nichts anderes angegeben ist).

Danke dir


----------



## irgendjemand (2. Dez 2011)

FALSCH

default ist package-private ...
public MUSS immer angegeben werden wenn es gewünscht ist ... ansonsten wird default package-private verwendet ...

nach zu lesen in der API-Doc


----------



## Djinndrache (2. Dez 2011)

irgendjemand hat gesagt.:


> FALSCH
> 
> default ist package-private ...
> public MUSS immer angegeben werden wenn es gewünscht ist ... ansonsten wird default package-private verwendet ...
> ...



Wieso kann ich dann mit "class" statt "public class" die Main-Class versehen und trotzdem aufrufen? Ist das weil ich sie durch "java project.Main" quasi von innen aufrufe?


----------



## TKausL (3. Dez 2011)

irgendjemand hat gesagt.:


> FALSCH
> 
> default ist package-private ...
> public MUSS immer angegeben werden wenn es gewünscht ist ... ansonsten wird default package-private verwendet ...
> ...


Nein, auch falsch.

package-private ist für Methoden default.
Für Klassen ist public default. Etwas anderes als public ist nichtmal erlaubt für Klassen (Ausnahme: Inner-Classes)


----------

