0
私はdog.jpgという名前のファイルをc:\ Tempに置いています。だから、その完全なWindowsのパスは、C:\一時\のdog.jpgWindows絶対パスをJavaに変換する
は、このサイト上のすべての答えは、/と\を置き換えるために提案したが、私が試したこれらのステートメントのどれも動いていないようにみえます:
Image image = new Image("C:\\Temp\\dog.jpg");
Image image = new Image("C://Temp//dog.jpg");
Image image = new Image("C:/Temp/dog.jpg");
私は次の例外レポートを取得しています:(
Image image = new Image("dog.jpg");
私は現在の作業ディレクトリと使用中のdog.jpgを置けばところで、それは動作しない):
Exception in Application start method
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Invalid URL: unknown protocol: c
at javafx.scene.image.Image.validateUrl(Image.java:1121)
at javafx.scene.image.Image.<init>(Image.java:620)
at Inclass_week7_session_1_4.start(Inclass_week7_session_1_4.java:21)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
... 1 more
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at javafx.scene.image.Image.validateUrl(Image.java:1115)
C:\Java\Tutorial\JavaFX 2>javac -version
javac 1.8.0_102
私は間違っていますか?そして、このWindowsの絶対パスをどのように動かすことができますか?
ありがとうございました。
私は常にファイルが存在するかどうかを確認するためにJavaのFileクラスを使用してプロトコルを追加します。また、あなたのImageViewはどこですか?ファイルがあるフォルダに移動し、ファイルエクスプローラのアドレスをコピーします。次に、ファイル名と拡張子を追加します。 – Sedrick
[JavaFXで画像を読み込めません](https://stackoverflow.com/questions/16099427/cannot-load-image-in-javafx)の可能な複製 –
Docsを見てください。 'Image(String)' - コンストラクタはURL文字列を取る!あなたはStacktraceでそれを見ることもできます: '原因:java.lang.IllegalArgumentException:無効なURL:不明なプロトコル:c'。 'file'プロトコル(Joe Cのコメントを参照)を使うか、' FileInputStream'を開いてコンストラクタ 'Image(InputStream)'を使う必要があります。 –