2017-07-06 10 views
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の絶対パスをどのように動かすことができますか?

ありがとうございました。

+0

私は常にファイルが存在するかどうかを確認するためにJavaのFileクラスを使用してプロトコルを追加します。また、あなたのImageViewはどこですか?ファイルがあるフォルダに移動し、ファイルエクスプローラのアドレスをコピーします。次に、ファイル名と拡張子を追加します。 – Sedrick

+1

[JavaFXで画像を読み込めません](https://stackoverflow.com/questions/16099427/cannot-load-image-in-javafx)の可能な複製 –

+0

Docsを見てください。 'Image(String)' - コンストラクタはURL文字列を取る!あなたはStacktraceでそれを見ることもできます: '原因:java.lang.IllegalArgumentException:無効なURL:不明なプロトコル:c'。 'file'プロトコル(Joe Cのコメントを参照)を使うか、' FileInputStream'を開いてコンストラクタ 'Image(InputStream)'を使う必要があります。 –

答えて

1

Imageクラスのコンストラクタは、URLではなく、絶対パスが必要ですので、あなたのURL

Image img = new Image("file:///C:/Temp/dog.jpg"); 
関連する問題