Bash: xargs
|
Verfasser |
Nachricht |
|
Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status:
offline
|
Bash: xargs
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
Homepage: [Link: Registrierung erforderlich] - Haufenweise Tutorials zu Teamspeak und Linux, ebenfalls Let's Plays im Hardcore Modus (nur 1 Leben)
YouTube Kanal: [Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
|
|
16.03.2013 22:20 |
|
|
Beiträge: 129
Bewertung: 0
Registriert seit: Feb 2013
Status:
offline
|
RE: Bash: xargs
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
Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2013 23:03 von Buchstabensalat.
|
|
16.03.2013 22:59 |
|
|
Beiträge: 162
Bewertung: 0
Registriert seit: Dec 2010
Status:
offline
|
RE: Bash: xargs
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.
|
|
16.03.2013 23:01 |
|
|
Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status:
offline
|
|
16.03.2013 23:28 |
|
|
Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status:
offline
|
RE: Bash: xargs
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
Homepage: [Link: Registrierung erforderlich] - Haufenweise Tutorials zu Teamspeak und Linux, ebenfalls Let's Plays im Hardcore Modus (nur 1 Leben)
YouTube Kanal: [Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2013 22:19 von Madmatti.
|
|
18.04.2013 22:15 |
|
|
Beiträge: 129
Bewertung: 0
Registriert seit: Feb 2013
Status:
offline
|
RE: Bash: xargs
find /var/www/web1/html -name "Baum.class" -execdir java $(basename {} .class) \;
|
|
18.04.2013 22:18 |
|
|
Beiträge: 1.385
Bewertung: 48
Registriert seit: Dec 2011
Status:
offline
|
RE: Bash: xargs
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.
|
|
18.04.2013 22:21 |
|
|
Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status:
offline
|
RE: Bash: xargs
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 ;-)
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
Homepage: [Link: Registrierung erforderlich] - Haufenweise Tutorials zu Teamspeak und Linux, ebenfalls Let's Plays im Hardcore Modus (nur 1 Leben)
YouTube Kanal: [Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
|
|
18.04.2013 22:24 |
|
|
Beiträge: 1.385
Bewertung: 48
Registriert seit: Dec 2011
Status:
offline
|
RE: Bash: xargs
Sollte in meinem Post eigentlich die Lösung stehen. Liegt an der Endung...
|
|
18.04.2013 22:27 |
|
|
Beiträge: 129
Bewertung: 0
Registriert seit: Feb 2013
Status:
offline
|
RE: Bash: xargs
probier mal: find /var/www/web1/html -name "Baum.class" -execdir java $basename {} .class \;
EDIT: vergiss es aber ich tüftel mal weiter.
Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2013 22:31 von Buchstabensalat.
|
|
18.04.2013 22:30 |
|
|