Index: trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 9017)
+++ trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 9019)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.GridBagLayout;
@@ -9,4 +10,8 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 
 import javax.swing.BorderFactory;
@@ -17,4 +22,5 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
 
 import org.openstreetmap.josm.Main;
@@ -57,5 +63,5 @@
         JosmTextArea readme = new JosmTextArea();
         readme.setEditable(false);
-        readme.setText(Version.loadResourceFile(Main.class.getResource("/README")));
+        setTextFromResourceFile(readme, "/README");
         readme.setCaretPosition(0);
 
@@ -67,10 +73,10 @@
         JosmTextArea contribution = new JosmTextArea();
         contribution.setEditable(false);
-        contribution.setText(Version.loadResourceFile(Main.class.getResource("/CONTRIBUTION")));
+        setTextFromResourceFile(contribution, "/CONTRIBUTION");
         contribution.setCaretPosition(0);
 
         JosmTextArea license = new JosmTextArea();
         license.setEditable(false);
-        license.setText(Version.loadResourceFile(Main.class.getResource("/LICENSE")));
+        setTextFromResourceFile(license, "/LICENSE");
         license.setCaretPosition(0);
 
@@ -111,4 +117,35 @@
     }
 
+    /**
+     * Reads the contents of the resource file that is described by the {@code filePath}-attribute and puts that text
+     * into the {@link JTextArea} given by the {@code ta}-attribute.
+     * @param ta the {@link JTextArea} to put the files contents into
+     * @param filePath the path where the resource file to read resides
+     */
+    private void setTextFromResourceFile(JTextArea ta, String filePath) {
+        InputStream is = getClass().getResourceAsStream(filePath);
+        if (is == null) {
+            displayErrorMessage(ta, tr("Failed to locate resource ''{0}''.", filePath));
+        } else {
+            try {
+                BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                String line;
+                while ((line = br.readLine()) != null) {
+                    ta.append(line+'\n');
+                }
+                br.close();
+            } catch (IOException e) {
+                Main.warn(e);
+                displayErrorMessage(ta, tr("Failed to load resource ''{0}'', error is {1}.", filePath, e.toString()));
+            }
+        }
+    }
+
+    private static void displayErrorMessage(JTextArea ta, String msg) {
+        Main.warn(msg);
+        ta.setForeground(new Color(200, 0, 0));
+        ta.setText(msg);
+    }
+
     private static JScrollPane createScrollPane(JosmTextArea area) {
         area.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
Index: trunk/src/org/openstreetmap/josm/data/Version.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Version.java	(revision 9017)
+++ trunk/src/org/openstreetmap/josm/data/Version.java	(revision 9019)
@@ -4,16 +4,11 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.InputStream;
 import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.util.Properties;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.LanguageInfo;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -29,28 +24,4 @@
 
     /**
-     * Load the specified resource as string.
-     *
-     * @param resource the resource url to load
-     * @return  the content of the resource file; null, if an error occurred
-     */
-    public static String loadResourceFile(URL resource) {
-        if (resource == null) return null;
-        String s = null;
-        try {
-            StringBuilder sb = new StringBuilder();
-            try (BufferedReader in = Utils.openURLReader(resource)) {
-                for (String line = in.readLine(); line != null; line = in.readLine()) {
-                    sb.append(line).append('\n');
-                }
-            }
-            s = sb.toString();
-        } catch (IOException e) {
-            Main.error(tr("Failed to load resource ''{0}'', error is {1}.", resource.toString(), e.toString()));
-            Main.error(e);
-        }
-        return s;
-    }
-
-    /**
      * Replies the unique instance of the version information
      *
@@ -71,29 +42,10 @@
     private boolean isLocalBuild;
 
-    protected Map<String, String> parseManifestStyleFormattedString(String content) {
-        Map<String, String> properties = new HashMap<>();
-        if (content == null) return properties;
-        Pattern p = Pattern.compile("^([^:]+):(.*)$");
-        for (String line: content.split("\n")) {
-            if (line == null || line.trim().isEmpty()) {
-                continue;
-            }
-            if (line.matches("^\\s*#.*$")) {
-                continue;
-            }
-            Matcher m = p.matcher(line);
-            if (m.matches()) {
-                properties.put(m.group(1), m.group(2));
-            }
-        }
-        return properties;
-    }
-
     /**
      * Initializes the version infos from the revision resource file
      *
-     * @param revisionInfo the revision info loaded from a revision resource file
-     */
-    protected void initFromRevisionInfo(String revisionInfo) {
+     * @param revisionInfo the revision info from a revision resource file as InputStream
+     */
+    protected void initFromRevisionInfo(InputStream revisionInfo) {
         if (revisionInfo == null) {
             this.releaseDescription = tr("UNKNOWN");
@@ -103,6 +55,12 @@
         }
 
-        Map<String, String> properties = parseManifestStyleFormattedString(revisionInfo);
-        String value = properties.get("Revision");
+        Properties properties = new Properties();
+        try {
+            properties.load(revisionInfo);
+            revisionInfo.close();
+        } catch (IOException e) {
+            Main.warn(tr("Error reading revision info from revision file: {0}", e.getMessage()));
+        }
+        String value = properties.getProperty("Revision");
         if (value != null) {
             value = value.trim();
@@ -119,7 +77,7 @@
         // the last changed data
         //
-        time = properties.get("Last Changed Date");
+        time = properties.getProperty("Last Changed Date");
         if (time == null) {
-            time = properties.get("Build-Date");
+            time = properties.getProperty("Build-Date");
         }
 
@@ -127,5 +85,5 @@
         //
         isLocalBuild = false;
-        value = properties.get("Is-Local-Build");
+        value = properties.getProperty("Is-Local-Build");
         if (value != null && "true".equalsIgnoreCase(value.trim()))  {
             isLocalBuild = true;
@@ -135,5 +93,5 @@
         //
         buildName = null;
-        value = properties.get("Build-Name");
+        value = properties.getProperty("Build-Name");
         if (value != null && !value.trim().isEmpty())  {
             buildName = value.trim();
@@ -143,5 +101,5 @@
         //
         StringBuilder sb = new StringBuilder();
-        for (Entry<String, String> property: properties.entrySet()) {
+        for (Entry<Object, Object> property: properties.entrySet()) {
             sb.append(property.getKey()).append(':').append(property.getValue()).append('\n');
         }
@@ -153,6 +111,6 @@
      */
     public void init() {
-        URL u = Main.class.getResource("/REVISION");
-        if (u == null) {
+        InputStream stream = Main.class.getResourceAsStream("/REVISION");
+        if (stream == null) {
             Main.warn(tr("The revision file ''/REVISION'' is missing."));
             version = 0;
@@ -160,5 +118,5 @@
             return;
         }
-        initFromRevisionInfo(loadResourceFile(u));
+        initFromRevisionInfo(stream);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 9017)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 9019)
@@ -451,5 +451,6 @@
     }
 
-    protected void drawArea(OsmPrimitive osm, Path2D.Double path, Color color, MapImage fillImage, Float extent, boolean disabled, TextElement text) {
+    protected void drawArea(OsmPrimitive osm, Path2D.Double path, Color color, MapImage fillImage, Float extent,
+            boolean disabled, TextElement text) {
 
         Shape area = path.createTransformedShape(nc.getAffineTransform());
