diff --git a/build.gradle b/build.gradle
index 12017a7436565b432cffe2f0f29a587c8a0a9019..2a9a41cb1c856f5607f489eed11c44b3a1e79abf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,6 @@
 apply plugin: 'java'
 apply plugin: 'war'
 
-compileJava.options.encoding = 'UTF-8'
-
-test{
-	forkEvery = 1
-	include '**/Test*'
-}
-
 repositories {
     jcenter()
     mavenCentral()
@@ -28,5 +21,14 @@ dependencies {
     testCompile fileTree(dir: 'lib', include: 'astroh2-0.3.jar')
 }
 
+compileJava {
+    options.encoding = "UTF-8"
+}
+
+test{
+	forkEvery = 1
+	include '**/Test*'
+}
+
 sourceSets.main.java.srcDirs = ["src"]
 sourceSets.test.java.srcDirs = ["test"]
diff --git a/src/tap/config/ConfigurableServiceConnection.java b/src/tap/config/ConfigurableServiceConnection.java
index fff3625b1a0a57a60936eba7b280965bdf52015e..48d3db434f856494ae11cf45b2432fa69789249d 100644
--- a/src/tap/config/ConfigurableServiceConnection.java
+++ b/src/tap/config/ConfigurableServiceConnection.java
@@ -1,24 +1,5 @@
 package tap.config;
 
-/*
- * This file is part of TAPLibrary.
- * 
- * TAPLibrary is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * TAPLibrary is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with TAPLibrary.  If not, see <http://www.gnu.org/licenses/>.
- * 
- * Copyright 2016 - Astronomisches Rechen Institut (ARI)
- */
-
 import static tap.config.TAPConfiguration.DEFAULT_ASYNC_FETCH_SIZE;
 import static tap.config.TAPConfiguration.DEFAULT_DIRECTORY_PER_USER;
 import static tap.config.TAPConfiguration.DEFAULT_EXECUTION_DURATION;
@@ -82,14 +63,31 @@ import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Properties;
 
+/*
+ * This file is part of TAPLibrary.
+ * 
+ * TAPLibrary is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * TAPLibrary is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with TAPLibrary.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * Copyright 2016 - Astronomisches Rechen Institut (ARI)
+ */
+
 import adql.db.FunctionDef;
 import adql.db.STCS;
 import adql.parser.ParseException;
@@ -326,42 +324,30 @@ public final class ConfigurableServiceConnection implements ServiceConnection {
 	/**
 	 * <p>Resolve the given file name/path.</p>
 	 * 
-	 * <p>Only the URI protocol "file:" is allowed. If the protocol is different a {@link TAPException} is thrown.</p>
-	 * 
 	 * <p>
-	 * 	If not an absolute URI, the given path may be either relative or absolute. A relative path is always considered
+	 * 	If not an absolute path, the given path may be either relative or absolute. A relative path is always considered
 	 * 	as relative from the Web Application directory (supposed to be given in 2nd parameter).
 	 * </p>
 	 * 
-	 * @param filePath			URI/Path/Name of the file to get.
+	 * @param filePath			Path/Name of the file to get.
 	 * @param webAppRootPath	Web Application directory local path.
 	 * @param propertyName		Name of the property which gives the given file path.
 	 * 
 	 * @return	The specified File instance.
-	 * 
-	 * @throws TAPException	If the given URI is malformed or if the used URI scheme is different from "file:".
+	 *
+	 * @throws ParseException	If the given file path is a URI/URL.
 	 */
 	protected static final File getFile(final String filePath, final String webAppRootPath, final String propertyName) throws TAPException{
 		if (filePath == null)
 			return null;
+		else if (filePath.matches(".*:.*"))
+			throw new TAPException("Incorrect file path for the property \"" + propertyName + "\": \"" + filePath + "\"! URI/URLs are not expected here.");
 
-		try{
-			URI uri = new URI(filePath);
-			if (uri.isAbsolute()){
-				if (uri.getScheme().equalsIgnoreCase("file"))
-					return new File(uri);
-				else
-					throw new TAPException("Incorrect file URI for the property \"" + propertyName + "\": \"" + filePath + "\"! Only URI with the protocol \"file:\" are allowed.");
-			}else{
-				File f = new File(filePath);
-				if (f.isAbsolute())
-					return f;
-				else
-					return new File(webAppRootPath, filePath);
-			}
-		}catch(URISyntaxException use){
-			throw new TAPException("Incorrect file URI for the property \"" + propertyName + "\": \"" + filePath + "\"! Bad syntax for the given file URI.", use);
-		}
+		File f = new File(filePath);
+		if (f.isAbsolute())
+			return f;
+		else
+			return new File(webAppRootPath, filePath);
 	}
 
 	/**
diff --git a/src/tap/resource/ForwardResource.java b/src/tap/resource/ForwardResource.java
index c5a1b80ccb5a63e96b83ba80d0c410a168fc696f..3e3f9a6e5c71166cdd49b29da43829c7a31d14fa 100644
--- a/src/tap/resource/ForwardResource.java
+++ b/src/tap/resource/ForwardResource.java
@@ -16,7 +16,7 @@ package tap.resource;
  * You should have received a copy of the GNU Lesser General Public License
  * along with TAPLibrary.  If not, see <http://www.gnu.org/licenses/>.
  * 
- * Copyright 2015 - Astronomisches Rechen Institut (ARI)
+ * Copyright 2015-2017 - Astronomisches Rechen Institut (ARI)
  */
 
 import java.io.BufferedReader;
@@ -48,14 +48,14 @@ import uws.service.log.UWSLog.LogLevel;
  * 	the given URL will be performed.
  * </p>
  * 
- * <p><i>See {@link #forward(String, String, HttpServletRequest, HttpServletResponse)} for more details</i></p> 
+ * <p><i>See {@link #forward(String, String, HttpServletRequest, HttpServletResponse)} for more details</i></p>
  * 
  * @author Gr&eacute;gory Mantelet (ARI)
- * @version 2.1 (11/2015)
+ * @version 2.1 (03/2017)
  * @since 2.1
  */
 public abstract class ForwardResource implements TAPResource {
-	
+
 	/** Logger that {@link #forward(String, String, HttpServletRequest, HttpServletResponse)} must use
 	 * in case of not grave error (e.g. the specified Web Application file can not be found). */
 	protected final TAPLog logger;
@@ -65,7 +65,7 @@ public abstract class ForwardResource implements TAPResource {
 	 * 
 	 * @param logger	A TAP logger.
 	 */
-	protected ForwardResource(final TAPLog logger) {
+	protected ForwardResource(final TAPLog logger){
 		this.logger = logger;
 	}
 
@@ -79,7 +79,7 @@ public abstract class ForwardResource implements TAPResource {
 	 * 	                                    In this case the request is forwarded to this file. It is neither a redirection nor a copy,
 	 * 	                                    but a kind of inclusion of the interpreted file into the response.
 	 *                                      <i>This method MUST be used if your page/content is a JSP.</i></li>
-	 * <li><b>a local file</b> if a URI starts with "file:". In this case, the content of the local file is copied in the HTTP response. There is no interpretation. So this method should not be used for JSP.</li>	
+	 * <li><b>a local file</b> if a URI starts with "file:". In this case, the content of the local file is copied in the HTTP response. There is no interpretation. So this method should not be used for JSP.</li>
 	 * <li><b>a distance document</b> in all other cases. Indeed, if there is a scheme different from "file:" the given URI will be considered as a URL.
 	 *                                In this case, any request to the TAP home page is redirected to this URL.</li>
 	 * </ol>
@@ -87,7 +87,7 @@ public abstract class ForwardResource implements TAPResource {
 	 * <p><b>Important note:</b>
 	 * 	The 1st option is applied ONLY IF the path of the TAP servlet is NOT the root path of the web application:
 	 * 	that's to say <code>/*</code>. In the case where a URI without scheme is provided though the servlet path
-	 * 	is <code>/*</code>, this function will resolve the full path on the local file system and apply the 
+	 * 	is <code>/*</code>, this function will resolve the full path on the local file system and apply the
 	 * 	2nd option: write the file content directly in the response. Note that will work only in cases where the
 	 * 	specified file is not a JSP or does not need any kind of interpretation by the function
 	 * 	{@link RequestDispatcher#forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)}.
@@ -106,7 +106,7 @@ public abstract class ForwardResource implements TAPResource {
 	 *                    				or when the HTTP connection has been aborted.
 	 * @throws IllegalStateException	If an attempt of resetting the buffer fails.
 	 */
-	public final boolean forward(final String file, final String mimeType, final HttpServletRequest request, final HttpServletResponse response) throws IOException {
+	public final boolean forward(final String file, final String mimeType, final HttpServletRequest request, final HttpServletResponse response) throws IOException{
 		boolean written = false;
 
 		// Display the specified file, if any is specified:
@@ -114,17 +114,17 @@ public abstract class ForwardResource implements TAPResource {
 
 			URI uri = null;
 			try{
-				uri = new URI(file);
-				
+				uri = new URI(file.replaceAll(" ", "%20"));
+				/* Note: the space replacement is just a convenient way to fix badly encoding URIs.
+				 *       A proper way would be to encode all such incorrect URI characters (e.g. accents), but
+				 *       the idea here is to focus on the most common mistake while writing manually 'file:' URIs. */
+
 				/* If the servlet is set on the root Web Application path, a forward toward a WebContent resource won't work.
 				 * The file then need to be copied "manually" in the HTTPServletResponse. For that, the trick consists to rewrite
 				 * the given file path to a URI with the scheme "file://". */
-				String tmpFile = null;
-				if (request.getServletPath().length() == 0 && uri.getScheme() == null){
-					tmpFile = "file://"+request.getServletContext().getRealPath(file);
-					uri = new URI(tmpFile);
-				}
-				
+				if (request.getServletPath().length() == 0 && uri.getScheme() == null)
+					uri = new URI("file", null, request.getServletContext().getRealPath(file), null);
+
 				/* CASE: FILE IN WebContent */
 				if (uri.getScheme() == null){
 					try{
@@ -206,7 +206,7 @@ public abstract class ForwardResource implements TAPResource {
 
 			}catch(IOException ioe){
 				/*   This IOException can be caught here only if caused by a HTTP client abortion or by a closing of the HTTPrequest.
-				 * So, it must be propagated until the TAP instance, where it will be merely logged as INFO. No response/error can be 
+				 * So, it must be propagated until the TAP instance, where it will be merely logged as INFO. No response/error can be
 				 * returned in the HTTP response. */
 				throw ioe;
 
diff --git a/test/tap/config/TestConfigurableServiceConnection.java b/test/tap/config/TestConfigurableServiceConnection.java
index ea69a6668bd7f196f19e9a4d3b4efe0757df84d6..38ddbd5d575a1643e45834619064a4e9b24ca7ad 100644
--- a/test/tap/config/TestConfigurableServiceConnection.java
+++ b/test/tap/config/TestConfigurableServiceConnection.java
@@ -1124,11 +1124,8 @@ public class TestConfigurableServiceConnection {
 			// NULL test => NULL must be returned.
 			assertNull(ConfigurableServiceConnection.getFile(null, rootPath, propertyName));
 
-			// Valid file URI:
-			path = "/custom/user/dir";
-			assertEquals(path, ConfigurableServiceConnection.getFile("file://" + path, rootPath, propertyName).getAbsolutePath());
-
 			// Valid absolute file path:
+			path = "/custom/user/dir";
 			assertEquals(path, ConfigurableServiceConnection.getFile(path, rootPath, propertyName).getAbsolutePath());
 
 			// File name relative to the given rootPath:
@@ -1144,14 +1141,14 @@ public class TestConfigurableServiceConnection {
 			fail("None of these tests should have failed!");
 		}
 
-		// Test with a file URI having a bad syntax:
-		path = "file:#toto^foo";
+		// Test with a file URI:
+		path = "file:/custom/user/dir";
 		try{
 			ConfigurableServiceConnection.getFile(path, rootPath, propertyName);
-			fail("This test should have failed, because the given file URI has a bad syntax!");
+			fail("This test should have failed, because URIs are no longer supported!");
 		}catch(Exception ex){
 			assertEquals(TAPException.class, ex.getClass());
-			assertEquals("Incorrect file URI for the property \"" + propertyName + "\": \"" + path + "\"! Bad syntax for the given file URI.", ex.getMessage());
+			assertEquals("Incorrect file path for the property \"" + propertyName + "\": \"" + path + "\"! URI/URLs are not expected here.", ex.getMessage());
 		}
 
 		// Test with an URL:
@@ -1161,7 +1158,7 @@ public class TestConfigurableServiceConnection {
 			fail("This test should have failed, because the given URI uses the HTTP protocol (actually, it uses a protocol different from \"file\"!");
 		}catch(Exception ex){
 			assertEquals(TAPException.class, ex.getClass());
-			assertEquals("Incorrect file URI for the property \"" + propertyName + "\": \"" + path + "\"! Only URI with the protocol \"file:\" are allowed.", ex.getMessage());
+			assertEquals("Incorrect file path for the property \"" + propertyName + "\": \"" + path + "\"! URI/URLs are not expected here.", ex.getMessage());
 		}
 
 	}