Ausführen eines JAR-Archivs: Ungewollte Zeichenformatierung

  • Themenstarter Themenstarter don.eme
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

don.eme

Gast
Hola!

Ich habe folgendes Problem: Ich habe eine kleine Java-Applikation geschrieben, die automatisch ältere Dateien in einem angegebenen Verzeichnis löscht. Soweit ganz gut. Nun muss ich allerdings auf einen Server zugreifen um die Logs des Apache Tomcat Applikationsservers zu löschen. Der Pfad der Logs ist "C:\Programme\Apache\Tomcat 5.5\logs\".

Rufe ich das Programm nun über die Kommandozeile auf, wird der Punkt bei "Tomcat 5.5" in ein Slach ( / ) umgewandelt. Das Verzeichnis wird nicht korrekt gelesen, das Programm bricht ab. Kann ich das Zeichen irgendwie maskieren? Da ich auf einem Server arbeite, ist die Umbenennung des Ordners nicht wirklich zu bewerkstelligen, zu viele Parameter müssten dann geändert werden.

Weiß da jemand etwas?

Gruße, E.

PS: Das Problem, das ich habe ist vielleicht schon einmal dagewesen, allerdings gestaltet sich die Suche nach "java jar . / konvertiert" recht schwer ;-)
 
Also ich kann dein Problem absolut nicht bestätigen 😀

Code:
import java.io.File;
import java.util.Arrays;


public class Test
{
	// Aufruf: 
	// java Test "C:\Programme\Apache\Tomcat 5.5\logs"
	public static void main(String[] args)
	{
		System.out.println(Arrays.deepToString(args));
		
		// C:\Programme\Apache\Tomcat 5.5\logs\file.txt
		File f = new File(args[0] + File.separator + "file.txt");
		System.out.println(f.exists());
		System.out.println(f.getAbsolutePath());
	}
}

Bei mir verursacht ein solcher Pfad keine Probleme. Ich starte dieses kleine Testprogramm, wie es im Kommentar angegeben ist, mit dem Pfad des log Verzeichnisses von Tomcat und versuche dann darin die file.txt zu finden, welche ich vorher angelegt hab. Er ersetzt dort keine Punkte durch Slashes (warum auch?):

Ausgabe:
Code:
[C:\Programme\Apache\Tomcat 5.5\logs]
true
C:\Programme\Apache\Tomcat 5.5\logs\file.txt
 
Verdammt... ^^

Meine genaue Fehlermeldung:

Code:
C:\Programme\Apache Software Foundation\Tomcat 5.5\logs>java -cp .;./loescheLogs.jar "C:\Programme\Apache Software Foundation\Tomcat 5.5\logs"
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Programme\Apache Software Foundation\Tomcat 5/5\logs

Ich glaube diese Fehlermeldung heißt etwas ganz anderes als ich vermutet habe, oder? Also der Punkt wird nicht durch ein Slash ersetzt, sondern die main scheint mit irgendetwas nicht umgehen zu können (die allerdings nur andere Funktionen aufruft, die ja offenbar keine Fehler melden).

Code:
public static void main(String[] args)
    {
    // Parameter prüfen
    checkArgs(args);
		
    // Dateien prüfen und ggf. löschen
    dateienPruefen(args);
		
    // Nachlauf
    System.exit(0);
    }
 
Was soll dieser Aufruf tun? Entweder es geht um eine class, dann musst du selbige auch angeben, oder es geht um eine jar dann muss es java -jar xy.jar heißen und das -cp muss weg.
 
Ach ich Schaf... :autsch:

Das wars, ich musste -jar statt -cp setzen. Das kommt davon, wenn man hin und herkopiert ;-) Jetzt habe ich zwar nen anderen Fehler, aber der liegt am verwendeten JRE.

Vielen Dank euch!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben