Path wird nicht richtig "übersetzt"?

Quiji

Mitglied
Hallo liebe leute,
ich versuche auß einer Textdatei die einzelnen Zeilen zu laden.
Dies klappt perfekt solange ich den direkten Pfad angebe.

BSP:
public static File weapons = new File("C:/sys/weapons/rusty_dagger.txt");

Wenn ich jedoch statt rusty_dagger den String path benutze und path zu rusty_dagger setzte, gibt er mir die (FileNotFoundException e).

Code:

Java:
public static void itemName(String x)
    {
        path = x;

    }       

    public static File weapons = new File("C:/sys/weapons/"+path+".txt");
Scanner sc = new Scanner(weapons); 

void blablabla{

try
{
alname.add(sc.nextLine());
}
catch(FileNotFoundException e)
            {
                System.out.println("FileNotFoundException");
                // nothing to do
            }           


}
 
Zuletzt bearbeitet von einem Moderator:

JCODA

Top Contributor
Ich gehe davon aus dass das Problem daran liegt, dass du "weapons" static gemacht hast, und nicht genau weißt, was static in dem Kontext bedeutet. Zeig doch mal die Version, die dir die Exception auslöst.
 

Thallius

Top Contributor
Wundert mich das das erste geht. Denn c: läßt auf Windows schließen und Windows benutzt einen "\" und keinen "/" als Pfad trenner.

Du solltest Dir angewöhnen unbedingt IMMER und überall den File.separator zu benutzen. In Deinen Fall also:

"C:"+File.separator+"sys"+File.separator+"weapons"+File.Separator+path+".txt"

Weiterhin würde ich NIE UND NIEMALS einen absoluten Pfad benutzen und schon gar nicht von Root aus. Das funktioniert nur unter Windows. Du solltest immer relative Pfade benutzen. Beutze dafür die system properties userdir etc.

Das ist zwar deutlich mehr Tipparbeit abert dafür läuft es nachher auch auf jedem System

Gruß

Claus
 

Quiji

Mitglied
Ok wird "File.seperator" benutzt kein problem.
Der Absolute Pfad ist nur vorrübergehend.

Das erklärt aber nicht warum es mit dem direkten link funktioniert aber wenn die variable eingesetzt wird nicht.

Was hat das mit path als static variable zu tun?
 

Quiji

Mitglied
Ich brauche das static um es von anderen Klassen aufzurufen und selbst wenn ich es in public mache aendere , macht das keinen unterschied.
Hier mal der ganze Code:


Java:
import java.util.ArrayList;
import java.util.Scanner;
import java.io.*;

// um in eine textdatei zu schreiben
public class WeaponsDataBase
{
    public static String name;
    public static String quote; 
    public static int maxlife;
    public static int armor;
    public static int magc_armor;
    public static int stamina;
    public static int phys_attack;
    public static int magc_attack;    
    public static int mana;
    public static int spec_ability1;
    public static int spec_ability2;
    public static int quantity;
    public static int slot;
    public static int quality;

    public static int itemsize = 1; // höchste id des letzten items

    public static String path;  

    public static ArrayList alname = new ArrayList();
    public static ArrayList alquote = new ArrayList();
    public static ArrayList almaxlife = new ArrayList();
    public static ArrayList alarmor = new ArrayList();
    public static ArrayList almagc_armor = new ArrayList();
    public static ArrayList alstamina = new ArrayList();
    public static ArrayList alphys_attack = new ArrayList();
    public static ArrayList almagc_attack = new ArrayList();
    public static ArrayList almana = new ArrayList();
    public static ArrayList alspec_abil1 = new ArrayList();
    public static ArrayList alspec_abil2 = new ArrayList();
    public static ArrayList alquantity = new ArrayList();
    public static ArrayList alslot = new ArrayList();
    public static ArrayList alquality = new ArrayList();

    public static void itemName(String x)
    {
        path = x;

    }       

    public static File weapons = new File("C:"+File.separator+"sys"+File.separator+"weapons"+File.separator+path+".txt"); // muss geändert werden  bei installation   
    //     public static File test_path_weapons = new File("C:/sys/weapons/"+path+".txt");

    public static void loadItems()
    {

        if (weapons.exists())
        {

            try
            {

                Scanner sc = new Scanner(weapons); 

                for (int i = 0; i < itemsize ; i++) // speist die textdatei in arraylists 
                {

                   alname.add(sc.nextLine()); // Name
                    alquote.add(sc.nextLine()); // Beschreibung
                    almaxlife.add(sc.nextLine()); // Leben
                    alarmor.add(sc.nextLine()); // Rüstung
                    almagc_armor.add(sc.nextLine()); // Schutz vor Magie
                    alstamina.add(sc.nextLine()); // Stamina
                    alphys_attack.add(sc.nextLine()); // Physischer Schaden
                    almagc_attack.add(sc.nextLine());// Magischer Schaden
                    almana.add(sc.nextLine()); // Mana
                    alspec_abil1.add(sc.nextLine()); // Spezielle Fähigkeiten
                    alspec_abil2.add(sc.nextLine()); // ""
                    alquantity.add(sc.nextLine()); // Geld Wert
                    alslot.add(sc.nextLine()); // Stelle des Equips
                    alquality.add(sc.nextLine()); // 14 ( Qualitaet)

                    System.out.println("Erfolgreich geladen");

                }
            }
            catch(FileNotFoundException e)
            {
                System.out.println("FileNotFoundException");
                // nothing to do
            }           
        }
        else
        {
            System.out.println("File: " + path + " not found.");

        }

    }

    public static void showItemStats(int x) // Id des Items ausgeben
    {
        if (alname.size() > 0)
        {
            
            System.out.println("[" + alname.get(x) + "]" );
            System.out.println("[" + alquote.get(x) + "]" );
            System.out.println("[" + almaxlife.get(x) + "]" );
            System.out.println("[" + alarmor.get(x) + "]" );
            System.out.println("[" + almagc_armor.get(x) + "]" );
            System.out.println("[" + alstamina.get(x) + "]" );
            System.out.println("[" + alphys_attack.get(x) + "]" );
            System.out.println("[" + almagc_attack.get(x) + "]" );
            System.out.println("[" + almana.get(x) + "]" );
            System.out.println("[" + alspec_abil1.get(x) + "]" );
            System.out.println("[" + alspec_abil2.get(x) + "]" );
            System.out.println("[" + alquantity.get(x) + "]" );
            System.out.println("[" + alslot.get(x) + "]" );
            System.out.println("[" + alquality.get(x) + "]" );
        }
        else 
        {
            System.out.println("Error beim auslesen der datei");
        }

    }
}
 
Zuletzt bearbeitet von einem Moderator:

arilou

Bekanntes Mitglied
'static' Variablen-Deklarationen fließen (in ihrer Reihenfolge wie sie im Code kommen) in den statischen Konstruktor der Klasse ein.

'static' Methoden-Deklarationen sind Klassenmethoden, und werden erst ausgeführt, wenn das Programm dies (an anderer Stelle) dann macht.

Das kann verzwickt werden, wenn die 'static' Methode wiederum vom statischen Konstruktor aufgerufen wird... (was hier aber nicht vorliegt).
Also, wie schon gesagt: Nochmal im Buch nachlesen, was 'static' bedeutet, was ein statischer Konstruktor ist, was eine static-Methode ist, ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Falscher Link zum Path? Unterschiedliche Antworten bei Eclipse und VisualStudiocode Java Basics - Anfänger-Themen 5
V JDK / JRE / PATH Verwirrungen Java Basics - Anfänger-Themen 6
J Count und Copy in Stream<Path> Java Basics - Anfänger-Themen 11
F Git Projekt im Build Path Java Basics - Anfänger-Themen 3
J Erstellen einer Datei ohne path Java Basics - Anfänger-Themen 1
B MySQL Path bekommen Java Basics - Anfänger-Themen 40
B PATH kann nicht geändert werden Java Basics - Anfänger-Themen 2
G Erste Schritte Unter Mac "Path" anpassen .bash_profile? Java Basics - Anfänger-Themen 5
M Umgebungsvariable JDK/JRE? PATH setzen Java Basics - Anfänger-Themen 5
U Absolute path funktioniert nicht Java Basics - Anfänger-Themen 5
D javac kann trotz PATH-Eintrag nicht gefunden werden (Hello World) Java Basics - Anfänger-Themen 10
B Umgebungsvariable PATH gelöscht, Probleme bei Wiederherstellung Java Basics - Anfänger-Themen 1
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
H Best Practice java.io.File oder java.nio.Path Java Basics - Anfänger-Themen 5
S PATH und Pfad auslesen.... Java Basics - Anfänger-Themen 3
H Eclipse startet nicht (PATH Problem?) Java Basics - Anfänger-Themen 12
S Dateien mittels Path(s) kopieren und umbenennen. Java Basics - Anfänger-Themen 4
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
Z Umgebungsvariable PATH-Umgebungsvariable unter Windows 7 Java Basics - Anfänger-Themen 27
S Umgebungsvariable Exception in thread "main" java.lang.UnsatisfiedLinkError: no J3D in java.librar y.path Java Basics - Anfänger-Themen 15
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
Y .class Ausführung nicht möglich - Path lässt sich nicht ändern Java Basics - Anfänger-Themen 8
0 Path Java Basics - Anfänger-Themen 2
S java.io.file Appdata-PATH Java Basics - Anfänger-Themen 5
G was ist der Project class path Java Basics - Anfänger-Themen 7
G OOP Projektabhängigkeiten: A cycle was detected in the build path of project Java Basics - Anfänger-Themen 10
M Path Umgebungsvariable Java Basics - Anfänger-Themen 5
A Zeilenumbrüche im class-path der manifest.mf? Java Basics - Anfänger-Themen 5
D Java dll's und java.library.path Java Basics - Anfänger-Themen 2
J JAVA_HOME und path setzen bei windows 7 Java Basics - Anfänger-Themen 5
H windows 7 javac/path nicht gefunden Java Basics - Anfänger-Themen 3
M Java aufrufen, obwohl nicht in PATH-Variable eingetragen Java Basics - Anfänger-Themen 11
S HILFE Wie stelle ich die Path Varibalen wieder ein Java Basics - Anfänger-Themen 4
M path aus jar file Java Basics - Anfänger-Themen 14
Swiper Nach CronJob - Path nicht gefunden Java Basics - Anfänger-Themen 2
V Path? Java Basics - Anfänger-Themen 3
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
T umgebungsvariable in xp setzen: hinter vorhandenen path? Java Basics - Anfänger-Themen 3
V Link Error java.library.path Java Basics - Anfänger-Themen 4
B Path Umgebungsvariable einstellen? Java Basics - Anfänger-Themen 5
H -Djava.library.path liefert in der Konsole "ClassNotFou Java Basics - Anfänger-Themen 4
D Probleme mit java.library.path unter linux Java Basics - Anfänger-Themen 4
M Path eines Files Java Basics - Anfänger-Themen 24
T Einen Path von einer Main zu einer anderen Main übergeben Java Basics - Anfänger-Themen 34
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
S Probleme mit path Java Basics - Anfänger-Themen 4
E Setzen des java.library.path Java Basics - Anfänger-Themen 7
G Path anlegen Java Basics - Anfänger-Themen 2
R Zu blöd für System.getProperty(path.separator) ? Java Basics - Anfänger-Themen 3
A Classpath oder Path? Java Basics - Anfänger-Themen 7
F Class-Path Eintrag in Manifest Java Basics - Anfänger-Themen 6
M Path zu javac nur für Administrator auf XP? Java Basics - Anfänger-Themen 2
G Hello World: Invalid Path Java Basics - Anfänger-Themen 6
T progr. kompilieren nicht möglich..autoexec.bat...Path..`wo? Java Basics - Anfänger-Themen 2
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben