Index: trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 508)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 509)
@@ -55,9 +55,12 @@
 	 */
 	public static class PluginDescription {
+		// Note: All the following need to be public instance variables of
+		// type String.  (Plugin description XMLs from the server are parsed
+		// with tools.XmlObjectParser, which uses reflection to access them.)
 		public String name;
 		public String description;
-		public URL resource;
+		public String resource;
 		public String version;
-		public PluginDescription(String name, String description, URL resource, String version) {
+		public PluginDescription(String name, String description, String resource, String version) {
 			this.name = name;
 			this.description = description;
@@ -250,5 +253,5 @@
 									info.name,
 									info.description,
-									PluginInformation.fileToURL(f),
+									PluginInformation.fileToURL(f).toString(),
 									info.version));
 						} catch (PluginException x) {
@@ -273,5 +276,6 @@
 						proxy.info.name, 
 						proxy.info.description, 
-						proxy.info.file == null ? null : PluginInformation.fileToURL(proxy.info.file),
+						proxy.info.file == null ? null :
+							PluginInformation.fileToURL(proxy.info.file).toString(),
 						proxy.info.version));
 		return availablePlugins.values();
Index: trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java	(revision 508)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginDownloader.java	(revision 509)
@@ -140,7 +140,7 @@
 	}
 
-	private static boolean download(URL url, File file) {
+	private static boolean download(String url, File file) {
 		try {
-			InputStream in = url.openStream();
+			InputStream in = new URL(url).openStream();
 			OutputStream out = new FileOutputStream(file);
 			byte[] buffer = new byte[8192];
