Sponsor-Board.de

Normale Version: Bash: xargs
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

mein Problem ist wie folgt:
ich habe mehrere Ordner, die durchnummeriert sind, in denen eine Datei namens Baum.java vorhanden ist. Diese kann ich per javac Baum.java kompilieren, dies funktioniert. Nun möchte ich aber ALLE kompilieren. Mein Gedanke war wie folgt:

find /Pfad/zum/web/ordner | grep Baum.java | xargs -d '\n' javac

Denn mit xargs übergebe ich ja die jeweiligen Zeilen an den Befehl am Ende. Allerdings entstehen nun Fehler wie:
/pfad/zum/web/ordner/91/Baum.java:18: duplicate class: Baum
public class Baum extends JApplet implements MouseListener,MouseMotionListener
^
Aber wenn ich einfach es per javac ausführe klappts. Jemand ne Idee warum?

Danke im Voraus

Liebe Grüße
Madmatti
find . -name "Baum.java" -exec javac {} \;

Oder halt
find /Pfad/zum/web/ordner -name "Baum.java" -exec javac {} \;

EDIT:
falls du den selben fehler bekommst:
find /Pfad/zum/web/ordner -name "Baum.java" -execdir javac {} \;
Dann wird der befehl in dem jeweiligen ordner ausgeführt und es gibt keine doppelten klassen
Wenn du alle Dateien mit Public class hintereinander kompilieren willst kann das nicht funktionieren...

Such dir ne andere Möglichkeit oder nimm das Public raus. Es kann so nicht mehrere gleiche Public Classen geben.
Herzlichen Dank, habe Buchstabensalats Lösung ausprobiert und es klappt alles super. Vielen Dank!

LG Madmatti
Hallo,

ich möchte euch gerne eine weitere Frage stellen. Bei unserem Projekt haben wir einen kleinen Wandel gehabt und nun müssen wir anders kompilieren und ich möchte euch erneut um Hilfe bitten bei der korrekten Syntax.
Wir haben erneut einen Ordner Trees, in dem nummerierte Unterordner sind. In jedem Unterordner befindet sich jetzt eine Baum.class, welche man ja mit dem Befehl "java Baum" ausführen kann.
Wir stellen uns den Befehl ca. so vor: find Arbeitsfläche -name "Baum.class" -exec java {} \;
Doch das Problem ist ja die .class Endung (ich selber kenne Java nicht, aber das ist laut meinem Programmierpartner wohl das Problem ;-) ) und wir erhalten dann solch eine Ausgabe:

find /var/www/web1/html -name "Baum.class" -exec java{} \;
find: "java/var/www/web1/html/TourTree/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/91/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/1/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/4/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/5/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/86/Baum.class": Datei oder Verzeichnis nicht gefunden
find: "java/var/www/web1/html/Trees/96/Baum.class": Datei oder Verzeichnis nicht gefunden

Könnte bitte jemand kurz aushelfen? Vielen Dank schonmal im Voraus!

Liebe Grüße
Madmatti
find /var/www/web1/html -name "Baum.class" -execdir java $(basename {} .class) \;
Ich verstehe dein Problem bzw. Vorhaben nicht komplett, kann dir aber sagen, dass man wenn man per Konsole eine Java Klasse ausführen will die Endung weglassen muss und nur den Klassennamen schreibt.
Wird dein Problem aber wahrscheinlich nicht beheben.
Danke für eure Antworten.
Hehe, ich verstehe es auch nicht so ganz, vielleicht nötige ich einfach meinen Prog.partner sich auch anzumelden und selber zu fragen ;-)

Code:
find /var/www/web1/html -name "Baum.class" -execdir java $(basename {} .class) \;
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.
Exception in thread "main" java.lang.NoClassDefFoundError: //Baum/class
Caused by: java.lang.ClassNotFoundException: ..Baum.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: ./Baum.class. Program will exit.


Liebe Grüße
Madmatti

Sollte in meinem Post eigentlich die Lösung stehen. Liegt an der Endung...
probier mal: find /var/www/web1/html -name "Baum.class" -execdir java $basename {} .class \;

EDIT: vergiss es Biggrin aber ich tüftel mal weiter.
Seiten: 1 2
Referenz-URLs