Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 13293)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 13294)
@@ -1226,5 +1226,5 @@
 
         monitor.indeterminateSubTask(tr("Installing updated plugins"));
-        PluginHandler.installDownloadedPlugins(true);
+        PluginHandler.installDownloadedPlugins(pluginsToLoad, true);
 
         monitor.indeterminateSubTask(tr("Loading early plugins"));
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java	(revision 13293)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java	(revision 13294)
@@ -182,5 +182,5 @@
             downloaded.add(d);
         }
-        PluginHandler.installDownloadedPlugins(false);
+        PluginHandler.installDownloadedPlugins(toUpdate, false);
     }
 
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 13293)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 13294)
@@ -16,4 +16,5 @@
 import java.io.FilenameFilter;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -1234,6 +1235,5 @@
 
     /**
-     * Installs downloaded plugins. Moves files with the suffix ".jar.new" to the corresponding
-     * ".jar" files.
+     * Installs downloaded plugins. Moves files with the suffix ".jar.new" to the corresponding ".jar" files.
      *
      * If {@code dowarn} is true, this methods emits warning messages on the console if a downloaded
@@ -1241,7 +1241,9 @@
      * installation of the respective plugin is silently skipped.
      *
+     * @param pluginsToLoad list of plugin informations to update
      * @param dowarn if true, warning messages are displayed; false otherwise
-     */
-    public static void installDownloadedPlugins(boolean dowarn) {
+     * @since 13294
+     */
+    public static void installDownloadedPlugins(Collection<PluginInformation> pluginsToLoad, boolean dowarn) {
         File pluginDir = Main.pref.getPluginsDirectory();
         if (!pluginDir.exists() || !pluginDir.isDirectory() || !pluginDir.canWrite())
@@ -1274,5 +1276,15 @@
             }
             // Install plugin
-            if (!updatedPlugin.renameTo(plugin) && dowarn) {
+            if (updatedPlugin.renameTo(plugin)) {
+                try {
+                    // Update plugin URL
+                    URL newPluginURL = plugin.toURI().toURL();
+                    URL oldPluginURL = updatedPlugin.toURI().toURL();
+                    pluginsToLoad.stream().filter(x -> x.libraries.contains(oldPluginURL)).forEach(
+                            x -> Collections.replaceAll(x.libraries, oldPluginURL, newPluginURL));
+                } catch (MalformedURLException e) {
+                    Logging.warn(e);
+                }
+            } else if (dowarn) {
                 Logging.warn(tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. Renaming failed.",
                         plugin.toString(), updatedPlugin.toString()));
