2017-07-06 155 views
0

我有一个名为dog.jpg的文件,它驻留在c:\ Temp中。所以其完整的Windows路径是C:\ TEMP \ dog.jpg将Windows绝对路径转换为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"); 

(顺便说一句,它的工作,如果我把dog.jpg在当前工作目录和使用:

Image image = new Image("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的类文件,看文件是否存在添加的协议。此外,你的ImageView在哪里。我也去到该文件所在的文件夹并复制文件资源管理器的地址。然后我添加文件名和扩展名。 – Sedrick

+1

[无法在JavaFX中加载图像]的可能重复(https://stackoverflow.com/questions/16099427/cannot-load-image-in-javafx) –

+0

看看文档。 'Image(String)' - 构造器需要一个URL-String!你也可以在你的Stacktrace中看到:'由...引发:java.lang.IllegalArgumentException:无效的URL:未知的协议:c'。您必须使用'file'协议(请参阅Joe C的评论)或打开一个'FileInputStream'并使用构造函数'Image(InputStream)' –

回答

1

图像类构造函数需要一个URL,而不是绝对路径,所以在您的网址

Image img = new Image("file:///C:/Temp/dog.jpg"); 
相关问题