Index: src/main/java/java/net/URLClassLoader.java =================================================================== --- src/main/java/java/net/URLClassLoader.java (revision 542579) +++ src/main/java/java/net/URLClassLoader.java (working copy) @@ -576,7 +576,11 @@ if(idx>0) { name = name.substring(idx); } - String filename = prefix+name; + + // escape '%' symbol in the resource name + String fixedName = name.replace("%", "%25"); //$NON-NLS-1$ //$NON-NLS-2$ + String filename = prefix + fixedName; + try { filename = URLDecoder.decode(filename, "UTF-8"); //$NON-NLS-1$ } catch (IllegalArgumentException e) { Index: src/test/java/tests/api/java/net/URLClassLoaderTest.java =================================================================== --- src/test/java/tests/api/java/net/URLClassLoaderTest.java (revision 542579) +++ src/test/java/tests/api/java/net/URLClassLoaderTest.java (working copy) @@ -445,4 +445,12 @@ URLClassLoader loader = new URLClassLoader(urls, null); return loader; } + + /** + * Regression test for HARMONY-2255 + */ + public void test_getResourceAsStream() { + InputStream in = this.getClass().getClassLoader().getResourceAsStream("tests/api/java/net/Test%.properties"); + assertNotNull(in); + } } Index: src/test/resources/tests/api/java/net/Test%.properties ===================================================================