Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Die Funktion der relativen Pfade solltest Du noch einmal über Google etwas nachlesen oder damit experimentieren!
Mit einem führenden \ greifst Du auf das Root-Verzeichnis des aktuellen Laufwerks zu. Wenn Du also in dem angegebenen Pfad bist, dann bist du in c:\, d.h. du versuchst c:\image.jpg zu öffnen.
Mit einem führenden . greifst Du auf das aktuelle Verzeichnis zu. Also ein .\image.jpg würde auf die image.jpg Datei im aktuellen Verzeichnis zugreifen.
Dann musst Du aber auch aufpassen. \ ist das Escape Zeichen. In einem String müsstest Du also \\ schreiben, um einen Backslash zu bekommen. Aber in Java kannst Du generell den forward slash (/) verwenden. Dann würde der Code auch unter Unix-artigen Systemen funktionieren...
Ich versuche es schon seit 2 Stunden, wenn ich mal nicht "Cant read input file" bekomme, dann " Zugriff verweigert".....
Jetzt funktionieren nicht mal mehr die absoluten Pfade... "Zugriff verweigert". Ich habe es mal direkt auf die C-Platte gelegt.
Auch hier "Zugriff verweigert". Warum?
Auf welchen Ordner bezieht sich jetzt das "aktuelle Verzeichnis"?
Jeder Prozess hat ein "current working directory". Welches das genau ist, hängt davon ab, wie der Prozess gestartet wurde. Wenn du es aus einer IDE heraus startest, dann ist es vermutlich das Projektverzeichnis, also wahrscheinlich `C:\Users\Max Mustermann\Workspace\Testordner\Unterordner`.
Du kannst dir das current working directory auch ausgeben lassen:
In Dateisystempfaden bedeutet das Verzeichnis "." IMMER das aktuelle Verzeichnis.
Somit müsstest du vermutlich den Pfad `./src/test/resources/image.jpg` verwenden. (ja, Windows versteht auch forward Slashes, bzw. wird es durch Java in das richtige Format für das aktuelle Betriebssystem überführt).
Das ist das Verzeichnis, aus dem die Applikation gestartet wird. Also wenn Du es auf der Kommandozeile heraus startest, dann ist es das aktuelle Verzeichnis, in dem Du bist. IDEs machen dies teilweise unterschiedlich. Da habe ich schon einiges erlebt: Mal der Root-Ordner des Projektes, mal der Ausgabe-Ordner und mal auch der Ordner mit den Sourcen ...
Zeig den genauen Code. Wenn du mit \ arbeitest, dann bedenke auch den Hinweis, dass dies in einem String als Escape Zeichen genutzt wird.
Und Du kannst Dir den aktuellen Ordner auch ausgeben lassen: System.getProperty("user.dir")
oder gerne auch sowas: Paths.get(".").toAbsolutePath().normalize().toString();
oder gerne auch mit File oder FileSystems oder ....
Aber auch das Design sollte man sich gut überlegen. Was genau willst Du machen und warum ist das wichtig? Wenn Du nur eine Ressource laden willst, dann würde ich dies über den Classloader machen. Das wäre dann etwas in der Art: ImageIO.read( ClassLoader.getSystemResource( "/image.png" ) );
==> Wichtig: Hier ist das kein Path der relativ zum aktuellen Verzeichnis gesucht wird sondern es wird auf dem Classpath gesucht, d.h. die Datei kann auch im jar File sein und so ...
Das ist alles nachvollziehbar, aber egal welchen Ansatz ich nehme, mir wird der Zugriff verweigert. Nichteinmal mehr absolute Pfade funktionieren mehr.