• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Umstieg Windows auf Linux und Java

Hallo zusammen,
ich habe nun folgendes Problem.
Ich habe es nach ein paar Tutorials hinbekommen Das SDK von java zu installieren und auch die IDE Netbeans. Ich bin noch sehr neu im Java, so wie ich auch sehr neu im Linux bin :) Bis jetzt arbeitete ich immer mit dem JCreator unter Windows. Ich möchte eine Eingabe machen. Dies löste ich immer über die IOTools. Anders kenne ich es gar nicht. Die Tools im selben Verzeichnis wie die Klasse und es lief. Aber unter Linux ist das irgendwie komisch. Obwohl ich die Tools dort habe, wo sie angeblich nicht sein sollen. Hier mal mein Quellcode und die Fehlermeldung dazu:

Code:
package javaapplication;
import Prog1Tools.IOTools;


public class AppletEins {
    public static void main(String[] args) {
     System.out.print("Hallo Tux :)");
     System.out.println("Das sind meine ersten Versuche im Java unter Linux");
  
        a=IOTools.readInteger("a = ");
 
        
    }
  
  
    public AppletEins() {
    }
    
}

die Konsole gibt folgendes aus:
Code:
init:
deps-jar:
Compiling 1 source file to /home/dubois/area51/Java/linux_development/JavaApplication/build/classes
/home/dubois/area51/Java/linux_development/JavaApplication/src/javaapplication/AppletEins.java:4: package Prog1Tools does not exist
import Prog1Tools.IOTools;
/home/dubois/area51/Java/linux_development/JavaApplication/src/javaapplication/AppletEins.java:12: cannot find symbol
symbol  : variable a
location: class javaapplication.AppletEins
        a=IOTools.readInteger("a = ");
/home/dubois/area51/Java/linux_development/JavaApplication/src/javaapplication/AppletEins.java:12: cannot find symbol
symbol  : variable IOTools
location: class javaapplication.AppletEins
        a=IOTools.readInteger("a = ");
3 errors
BUILD FAILED (total time: 0 seconds)

Den Ordner Prog1Tools mit den IOTools habe ich im Pfad:
Code:
/home/dubois/area51/Java/linux_development/JavaApplication/src/javaapplication/Prog1Tools

Vielen Dank für eure Hilfe,
bis denne :)
 
Hi,
hab nach viel googeln und rumspielen wieder was dazugelernt :)

Man muss den classpath editieren, damit die IDE weiß wo sie hin muss.
mein Problem ist gelöst, aber ein neues wirft sich auf. Ein Verständnisproblem :?


Wenn die eigene Klasse sich im selben Ordner befindet Wie die Klassen die ich einbinden will, dann bräuchte doch der classpath keine änderung. Bei WIndows ist das auf jeden Fall so, denn da habe ich noch nie einen classpath editieren müssen und ich habe auch auf ein paar How To Seiten der Prog1Tools gelesen, dass es reicht die Tools in das aktuelle Verzeichnis des Projektes einzubinden.

Weshalb musste ich jetzt diese editierung vornehmen?
Hat das speziell was mit Netbeans zu tun?

Zumindest hab ich jetzt wieder was über Java und den classpath gelernt :)

Wäre schön wenn jemand background Wissen bringen könnte was da genau ist.

Grüsse,
 
Hallo Rainbow_warrior

Auch unter Windows muss die Clathpath-Systemvariable festgelegt werden. Vllt geschieht das bei automatisch mit der Installation, aber ich glaube ich habe damals auch diesen Pfad festlegen müssen.

Zum Clathpath selbst:

Wenn du ein Javaprogramm ausführst, weißt du vielleicht was eigentlich im Hintergrund passiert:

Erst wird die Java-Datei in Bytecode kompilliert:

Code:
javac myJavaProgramm.java

Mit dem Befehl

Code:
java myClass
soll nun eine JVM-Instanz zur Klasse myClass geladen werden.
Beachte, dass man den Klassennamen angibt, nicht den Dateinamen der *.class-Datei.

Hier kommt ein Clathloader zum Einsatz. Der Class-Loader der JVM (genannt Bootstrap) sucht nach einer statischen Methode mit dem Namen "main", welches ein String-Array als Argument übergeben bekommt.

Findet er in der Klasse diese Main-Methode kann das Programm ausgeführt werden.

Der Befehl java weiß natürlich nicht unbedingt in welchem Verzeichnis geguckt werden soll, wo sich der Klassenname befindet.

Code:
java -cp . myClass
würde den Clathpath direkt im aktuellen Verzeichnis suchen (Das besagt die relative Adressangabe ..


Mehr zum Thema Classpath von sun direkt:

http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/classpath.html


Ich empfehle als IDE übrigens Eclipse. Die meisten Java-Entwickler setzen auf dieses tool, weil es einfach großartig ist.
Das müsste eigentlich bei den meisten Linux-Distributionen direkt in den Paketquellen enthalten sein.


Btw. Wenn du auf der Konsole eine Eingabe machen willst, kannst du auch den Standard-Input-Stream verwenden.

z.B. mit
Code:
int h  = System.in.read();


Gruß
Mani
 
Oben