From 3d393ad9e3854c8d1023e363efbea8cfacc9160e Mon Sep 17 00:00:00 2001 From: Karl-Erik Enkelmann Date: Sat, 18 Oct 2025 12:13:37 +0200 Subject: [PATCH 1/2] Use our own fork of java-debug --- src/debugger.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/debugger.rs b/src/debugger.rs index dcd4ace..0646c82 100644 --- a/src/debugger.rs +++ b/src/debugger.rs @@ -55,6 +55,8 @@ const SCOPES: [&str; 3] = [TEST_SCOPE, AUTO_SCOPE, RUNTIME_SCOPE]; const PATH_TO_STR_ERROR: &str = "Failed to convert path to string"; +const JAVA_DEBUG_PLUGIN_FORK_URL: &str = "https://github.com/playdohface/java-debug/releases/download/0.53.2/com.microsoft.java.debug.plugin-0.53.2.jar"; + const MAVEN_METADATA_URL: &str = "https://repo1.maven.org/maven2/com/microsoft/java/com.microsoft.java.debug.plugin/maven-metadata.xml"; pub struct Debugger { @@ -77,6 +79,50 @@ impl Debugger { pub fn get_or_download( &mut self, language_server_id: &LanguageServerId, + ) -> zed::Result { + // when the fix to https://github.com/microsoft/java-debug/issues/605 becomes part of an official release + // switch back to this: + // return self.get_or_download_latest_official(language_server_id); + self.get_or_download_fork(language_server_id) + } + + fn get_or_download_fork( + &mut self, + _language_server_id: &LanguageServerId, + ) -> zed::Result { + let prefix = "debugger"; + let artifact = "com.microsoft.java.debug.plugin"; + let latest_version = "0.53.2"; + let jar_name = format!("{artifact}-{latest_version}.jar"); + let jar_path = PathBuf::from(prefix).join(&jar_name); + + if let Some(path) = &self.plugin_path + && fs::metadata(path).is_ok_and(|stat| stat.is_file()) + && path.ends_with(jar_name) + { + return Ok(path.clone()); + } + + download_file( + JAVA_DEBUG_PLUGIN_FORK_URL, + jar_path.to_str().ok_or(PATH_TO_STR_ERROR)?, + DownloadedFileType::Uncompressed, + ) + .map_err(|err| { + format!( + "Failed to download java-debug fork from {}: {err}", + JAVA_DEBUG_PLUGIN_FORK_URL + ) + })?; + + self.plugin_path = Some(jar_path.clone()); + Ok(jar_path) + } + + #[allow(unused)] + fn get_or_download_latest_official( + &mut self, + language_server_id: &LanguageServerId, ) -> zed::Result { let prefix = "debugger"; From 5ace2df980ef11192e87ad8528561d06e0650988 Mon Sep 17 00:00:00 2001 From: Karl-Erik Enkelmann Date: Mon, 27 Oct 2025 18:19:45 +0100 Subject: [PATCH 2/2] Use repo owned by zed for downloading --- src/debugger.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debugger.rs b/src/debugger.rs index 0646c82..ae62014 100644 --- a/src/debugger.rs +++ b/src/debugger.rs @@ -55,7 +55,7 @@ const SCOPES: [&str; 3] = [TEST_SCOPE, AUTO_SCOPE, RUNTIME_SCOPE]; const PATH_TO_STR_ERROR: &str = "Failed to convert path to string"; -const JAVA_DEBUG_PLUGIN_FORK_URL: &str = "https://github.com/playdohface/java-debug/releases/download/0.53.2/com.microsoft.java.debug.plugin-0.53.2.jar"; +const JAVA_DEBUG_PLUGIN_FORK_URL: &str = "https://github.com/zed-industries/java-debug/releases/download/0.53.2/com.microsoft.java.debug.plugin-0.53.2.jar"; const MAVEN_METADATA_URL: &str = "https://repo1.maven.org/maven2/com/microsoft/java/com.microsoft.java.debug.plugin/maven-metadata.xml";