2016-10-30 6 views
0

Wenn ich mein Java-Programm in NetBeans ausführen und folgen Sie den Informationen im Ausgabefenster von einer Befehlszeile auszuführen:NetBeans Java-Projekt von der Kommandozeile: Arbeitsverzeichnis ist System32

To run this application from the command line without Ant, try: 
java -jar "C:\Users\erdik\OneDrive\Documents\Computing Science Degree\Course Folder\Year 1\Programming 1\Assignment 2 - Year 2 Edit\assignment2\dist\assignment2.jar" 

Das Programm beginnt zu laufen , aber wenn es darum geht, den folgenden Code ausführen, um eine TXT-Datei zu öffnen (meine „Datenbank“):

System.out.println("Loading database of stored transactions..."); 
try 
{ 
    file = new File("TransactionDetails.txt"); 
    inFile = new Scanner(file); 
} 
// if the log couldn't be found in the default program location 
catch (FileNotFoundException ex)  
{ 
    System.out.println(CustomMessages.FileNotFound() + 
      System.getProperty("user.dir")); // display default directory 
    System.out.println(CustomMessages.systemExit()); 
    System.exit(1); // the program needs the log to function as intended 
} 

es kann nicht die TXT-Datei findet und druckt das Standardverzeichnis als die Windows-Ordner System32. Wie kann ich den Speicherort als den Projektordner wie erwartet angeben?

Antwort

1

Sie könnten anstelle eines relativen Pfads einen absoluten Pfad zur Datei verwenden. z.B.

file = new File("C:\Users\erdik\OneDrive\Documents\Computing Science Degree\Course Folder\Year 1\Programming 1\Assignment 2 - Year 2 Edit\assignment2\dist\TransactionDetails.txt"); 
inFile = new Scanner(file); 
+0

Fantastisch, hat perfekt funktioniert - danke. Die Befehlszeile verwendet jetzt den absoluten Pfad, kein relatives Benutzerverzeichnis zum Öffnen der Datei, tolle Idee! –

+0

froh ich könnte helfen :) – ivange94

1

Sie können sich nicht darauf verlassen, dass das aktuelle Arbeitsverzeichnis auf irgendetwas eingestellt ist.

Geben Sie entweder die Datei als Klassenpfadressource an, oder fragen Sie die jvm-Datei, in der sich die Klasse im Dateisystem befindet, und suchen Sie die entsprechende Datei.

Für eine schreibgeschützte Datei würde ich es als Ressource bereitstellen.

+0

war nicht sicher, wie man das zuerst macht. Dann habe ich NetBeans einen Quellordner hinzugefügt, der die TXT-Datei enthielt, und es funktionierte. Behalte dies für die Zukunft im Hinterkopf - da ich wusste, wie man .jar-Dateien usw. hinzufügt, aber nicht das Konzept, das du vorgeschlagen hast. –

Verwandte Themen