Ich habe den folgenden Code, der aus einer Datei liest:
%Vor%Dies funktioniert wie erwartet, wenn ich auf Tomcat-Server unter Windows bereitstellen. Wenn ich unter Linux dasselbe versuche, werden die Dateien nicht gelesen. Beim Überprüfen der tomcat-Protokolldatei sehe ich:
%Vor% Der Fehler tritt aufgrund von System.lineSeparator()
auf, aber wenn ich das Javadoc überprüfe, heißt es:
Gibt die systemabhängige Zeilentrennzeichenfolge zurück. Es kehrt immer zurück derselbe Wert - der Anfangswert der Systemeigenschaft line.separator.
Auf UNIX-Systemen gibt es "\ n" zurück; auf Microsoft Windows Systemen es gibt "\ r \ n" zurück.
Kann jemand erklären, warum das nicht funktioniert und wie es behoben wird, damit es auf mehreren Plattformen funktioniert?
Es scheint, dass Sie nicht die gleiche Version von Java zwischen Linux und Windows verwenden.
Wie Sie im Javadoc sehen können, System.lineSeparator()
existiert nicht in Java & lt; 7.
Wenn Sie also das Zeilentrennzeichen auf java & lt; 7, müssen Sie verwenden:
%Vor%Es scheint, dass Sie verschiedene JDK-Versionen unter Windows und Linux ausführen.
System
Klasse in Java 6), die auf Ihrer Linux-Box ausgeführt wird. Verwenden Sie für den abwärtskompatiblen Code System.getProperty("line.separator")
.
Wie andere darauf hingewiesen haben, gibt es ein Problem mit den Versionen. Ich würde es wagen zu sagen, dass das bloße Ändern der JVM nicht ausreicht. Ihr Programm könnte beim Start auf die erwartete Version prüfen, um solche Probleme in der Zukunft zu vermeiden :
%Vor%
Sie können dies auch für andere Einstellungen (Gebietsschema ...) tun, aber diese hängen von der Art Ihres Projekts ab. Die Idee ist, dass ein totes Programm besser ist als ein verkrüppeltes (fail fast), eine andere Idee ist, dass man ein Problem ein für alle Mal beheben sollte (Fehler einmal finden). . Hier finden Sie weitere Tipps: Ссылка
System.lineSeparator()
wird in Java 7
eingefügt. Es scheint also, dass Sie eine frühere Version auf Ihrem Linux-Rechner verwenden. Sie können System.getProperty("line.separator");
verwenden, um es zu bekommen oder Ihre Java-Version auf Ihrem Linux-Rechner zu aktualisieren.