diff --git a/jams-launcher/src/main/java/launcher/AppStarter.java b/jams-launcher/src/main/java/launcher/AppStarter.java
index ec9f3da234a716fe219353972ff319bdd02f0742..51c89bfcd07827ab3bdd1ed6af155240f2f5f250 100644
--- a/jams-launcher/src/main/java/launcher/AppStarter.java
+++ b/jams-launcher/src/main/java/launcher/AppStarter.java
@@ -86,7 +86,7 @@ public class AppStarter extends Thread {
                     doUpdate.wait();
                 }
                 if(doUpdate.get()){
-                    server.tomcatLauncher.stopTomcat();
+                    Server.tomcatLauncher.stopTomcat();
                     server = null;
                     //This will trigger a force reload of the lib.
                     LibraryLoader.loadlibs(System.getProperty("user.dir"), AppStarter.class);
diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java
index 015e99a8aa1dce8aff1a9527119128cfc08c2728..34e3f1a89509940fb2566e06e181551cca770962 100644
--- a/jams-server/src/main/java/net/jami/jams/server/Server.java
+++ b/jams-server/src/main/java/net/jami/jams/server/Server.java
@@ -28,6 +28,8 @@ import com.jsoniter.output.EncodingMode;
 import com.jsoniter.output.JsonStream;
 import com.jsoniter.spi.DecodingMode;
 import com.jsoniter.spi.JsoniterSpi;
+import javassist.ClassPool;
+import javassist.compiler.Javac;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
@@ -69,15 +71,16 @@ public class Server {
     public static AppUpdater appUpdater;
 
     public Server(AppUpdater appUpdater, String port, String serverCertificate, String serverPrivateKey) {
-        Server.appUpdater = appUpdater;
         JsoniterRegistry.initCodecs();
+        Server.appUpdater = appUpdater;
         String[] args = {port, serverCertificate, serverPrivateKey};
         main(args);
     }
 
 
     public static void main(String[] args) {
-        //Start tomcat.
+        //This is a fix to drop old cached stuff from the tomcat classloader.
+        ClassPool.getDefault().clearImportedPackages();
         switch (args.length) {
             case 0:
                 tomcatLauncher = new TomcatLauncher(8080);
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
index 6b71db3c1d02d0c967672a00b0c53c05a0816483..9ece9ab4cd0838fcc8bc9bee04076b29576e8e6b 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
@@ -27,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
 import net.jami.jams.ca.JamsCA;
 import net.jami.jams.common.utils.LibraryLoader;
 import net.jami.jams.server.Server;
+import org.apache.catalina.Context;
 import org.apache.catalina.WebResourceRoot;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.StandardContext;
@@ -51,7 +52,8 @@ import static net.jami.jams.server.Server.certificateAuthority;
 @Slf4j
 public class TomcatLauncher {
 
-    private final Tomcat tomcat = new Tomcat();
+    private static final Tomcat tomcat = new Tomcat();
+    private static StandardContext context;
 
     public TomcatLauncher(int port) {
         tomcat.getService().addConnector(TomcatConnectorFactory.getNoSSLConnector(port));
@@ -79,7 +81,7 @@ public class TomcatLauncher {
     public void startServer() {
         String jarName = System.getProperty("user.dir") + File.separator + "jams-server.jar";
         log.info("JAR Resource File = " + jarName);
-        StandardContext context = (StandardContext) tomcat.addWebapp("", new File(System.getProperty("user.dir")).getAbsolutePath());
+        context = (StandardContext) tomcat.addWebapp("", new File(System.getProperty("user.dir")).getAbsolutePath());
         context.getJarScanner().setJarScanFilter((jarScanType, s) -> false);
         log.info("Serving application from: " + new File(System.getProperty("user.dir")).getAbsolutePath());
 
@@ -123,6 +125,7 @@ public class TomcatLauncher {
             synchronized (tomcat) {
                 certificateAuthority.shutdownThreads();
                 tomcat.stop();
+                context.destroy();
                 tomcat.destroy();
             }
         } catch (Exception e) {