diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java index 10a1244bbd0..7a82c717a94 100644 --- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java +++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDescriptor.java @@ -16,9 +16,9 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; -import java.nio.file.Path; import java.util.function.Supplier; +import org.eclipse.core.runtime.IPath; import org.eclipse.jface.util.Policy; import org.eclipse.swt.SWTException; import org.eclipse.swt.graphics.Device; @@ -92,7 +92,8 @@ public static ImageDescriptor createFromFile(Class location, String filename) URL url; if (location == null) { try { - url = Path.of(filename).toUri().toURL(); + // Use IPath, which can handle illegal path's on Windows like: /C:/data/other + url = IPath.fromOSString(filename).toPath().toUri().toURL(); } catch (MalformedURLException e) { Policy.logException(e); url = null; diff --git a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/images/FileImageDescriptorTest.java b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/images/FileImageDescriptorTest.java index cd4f35a719b..f189c3f620e 100644 --- a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/images/FileImageDescriptorTest.java +++ b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/images/FileImageDescriptorTest.java @@ -24,7 +24,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; import java.io.IOException; import java.net.URL; @@ -55,7 +54,7 @@ public class FileImageDescriptorTest { * Test loading the image descriptors. */ @Test - public void testFileImageDescriptorWorkbench() { + public void testFileImageDescriptorWorkbench() throws IOException { Class missing = null; ArrayList images = new ArrayList<>(); @@ -64,7 +63,6 @@ public void testFileImageDescriptorWorkbench() { Enumeration bundleEntries = bundle.getEntryPaths(IMAGES_DIRECTORY); while (bundleEntries.hasMoreElements()) { - ImageDescriptor descriptor; String localImagePath = bundleEntries.nextElement(); URL[] files = FileLocator.findEntries(bundle, IPath.fromOSString(localImagePath)); @@ -75,12 +73,8 @@ public void testFileImageDescriptorWorkbench() { continue; } - try { - descriptor = ImageDescriptor.createFromFile(missing, FileLocator.toFileURL(file).getFile()); - } catch (IOException e) { - fail(e.getLocalizedMessage()); - continue; - } + ImageDescriptor descriptor = ImageDescriptor.createFromFile(missing, + FileLocator.toFileURL(file).getFile()); Image image = descriptor.createImage(); images.add(image);