                        .attachingConnectors
                        (filter #(= (.name (.transport %)) "dt_socket"))
                        first)]
-     (let [prm (.defaultArguments conn)]
+     (let [prm (.defaultArguments conn)
+           stale-classes (-> (:java-source-paths project-map)
+                             (stale-java-classes (:compile-path project-map))
+                             doall)]
        (.setValue (.get prm "port") debug-port)
        (.setValue (.get prm "hostname") "127.0.0.1")
        (when-let [vm (try (.attach conn prm) (catch Exception _))]
-         (leiningen.javac/javac project-map)))))
+         (leiningen.javac/javac project-map)
+         (->> stale-classes
+              (create-class-map (.allClasses vm))
+              (.redefineClasses vm))
+         (.dispose vm)))))
 
 ; high-level commands
 

    (binding [leiningen.new.templates/*dir* dir]
      (->> [file-name (render file-name data)]
           (leiningen.new.templates/->files data)))))

; check project types


      (.join pump-out)
      (.join pump-err)
      (.waitFor @process))))

(defn start-process-indirectly
  [process path & args]
