Skip to content
Draft
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
ae00afd
Start port of Community Toolkit Java integration
marshalhayes Jun 9, 2026
52f6926
Add missed maven-wrapper.properties file
marshalhayes Jun 9, 2026
d756681
Add wrapper path override support and certificate trust
marshalhayes Jun 9, 2026
e5a85b7
Add VSCode debugger support
marshalhayes Jun 16, 2026
e8ec238
Add tests for Aspire.Hosting.Java
marshalhayes Jun 18, 2026
154670d
Add gradle-wrapper.jar that was accidentally excluded
marshalhayes Jun 19, 2026
9393f44
Merge remote-tracking branch 'upstream/main' into pr-18033-java
Aug 15, 2026
27aebcf
Fix build breaks from merging latest main
Aug 15, 2026
bccb8bf
Rework Java hosting API: annotation-backed launch modes, publish-corr…
Aug 15, 2026
8a10cf8
Add Java container publishing and complete VS Code debugger parity
Aug 15, 2026
742cdc7
Fix OpenTelemetry agent resolution and complete the Java sample
adamint Aug 15, 2026
8df6660
Document the Java integration
Aug 15, 2026
7bedc37
Lock in JAVA_TOOL_OPTIONS quoting for paths containing spaces
Aug 15, 2026
d4fe94b
Drop the inert --enable-preview flag from the Java AppHost build
Aug 15, 2026
ff48b09
Give Java AppHosts a build-tool project model and fix JAR debugging
Aug 15, 2026
313c6e0
Address Copilot review: wrapper requirement, project roots, and Windo…
Aug 15, 2026
4a6abd3
Add an outerloop test that builds and runs the published Java image
Aug 15, 2026
3c61c81
Warn that the Spring Boot Dashboard bypasses Aspire
Aug 15, 2026
306a0c9
Add AddJavaContainerApp
Aug 15, 2026
c956dcb
Compile Maven/Gradle AppHosts with javac against the staged classpath
Aug 15, 2026
610532a
Keep the build tool out of the BuildKit cache mount
Aug 15, 2026
c701af9
Build Java images natively instead of under emulation
Aug 15, 2026
9258102
Auto-resolve Java debug entry points and fix duplicate deployment tar…
Aug 15, 2026
3404f05
Add AddQuarkusApp and a Quarkus sample, and fix Spring Boot endpoint …
Aug 15, 2026
29558b8
Fix review findings: shell quoting, build JDK floor, and stale build …
Aug 15, 2026
828ff84
Cover the wrapper-built image and the Java AppHost debugger gates
Aug 15, 2026
df7acd2
Validate WithJarArtifact paths and revert the dashboard launch profiles
Aug 15, 2026
0c83297
Merge remote-tracking branch 'upstream/main' into pr-18033-java
Aug 15, 2026
d56efd3
Point Quarkus telemetry at the Aspire dashboard
Aug 15, 2026
cb80103
Read the build JDK from the wrapper, and repair the Gradle wrapper
Aug 15, 2026
f0e0f0a
Make published Java images readable by the runtime user
Aug 15, 2026
d7a7e71
Generate the resource-builder bridge for no-options union overloads
Aug 15, 2026
611db68
Register the Java starter template with the CLI
Aug 15, 2026
3853607
Recommend the Java extension pack in the Java starter template
Aug 15, 2026
d137862
Address review feedback on version detection, image hardening and docs
Aug 15, 2026
e9c4a41
Reject authored container paths containing whitespace
Aug 15, 2026
ea83fa2
Declare generated Java numeric parameters as java.lang.Number
Aug 15, 2026
09218bc
Reject build-tool wrappers when parsing a Java AppHost launch
Aug 15, 2026
ae81f2d
Scope the Spring Boot lens to code and cross-build only portable JARs
Aug 15, 2026
ace62e3
Apply API review to the Java hosting surface
Aug 15, 2026
187a521
Warn about the Spring Boot Dashboard in parserless AppHost languages
Aug 15, 2026
1e2851e
Merge remote-tracking branch 'upstream/main' into pr-18033-java
Aug 15, 2026
0953089
Honour the named JAR when publishing, and fix Maven release precedence
Aug 15, 2026
b240441
Scope the Java README prerequisites to the modes that need them
Aug 15, 2026
869a5e5
Document how publish selects the JAR, and when it builds rather than …
Aug 15, 2026
7e45256
Ignore quoted version text in Gradle scripts, and cover Java AppHost …
Aug 15, 2026
23382cc
Only warn about the Spring Boot Dashboard in a conventional AppHost file
Aug 15, 2026
7c13526
Teach the extension that a Java AppHost is a first-class AppHost
Aug 15, 2026
a66c89f
Watch the Java AppHost with its real casing
Aug 15, 2026
6723df2
Reject a jarPath the container build cannot produce, and document the…
Aug 15, 2026
02138b9
Stop stale JARs accumulating in the AppHost dependency staging directory
Aug 15, 2026
eac530d
Describe what WithJarArtifact actually does when a jarPath is also set
Aug 15, 2026
9a3e35c
Clear staged Maven dependencies from the install path, not toolchain …
Aug 15, 2026
cc08ba7
Launch build tool wrappers through sh on Unix
Aug 15, 2026
7f1b51f
Quote the selected JAR before copying it in the container build
Aug 15, 2026
08a6332
Reject Windows-absolute authored paths wherever publishing runs
Aug 15, 2026
0e0cd26
Warn about the Spring Boot Dashboard for AddSpringBootApp too
Aug 15, 2026
ffea012
Stop opening launch profile URLs for orchestrated resources
Aug 15, 2026
f842aff
Fix polyglot crash, CRLF wrappers, and review findings; add a Java Ap…
Aug 15, 2026
022be11
Generate the Java SDK into its package directory so IDEs can resolve it
Aug 15, 2026
656525e
Reject Windows OTel agent paths and stop truncating the Gradle init s…
Aug 15, 2026
5c4f7db
Address review findings: wrapper exec bit, staging failures, duplicat…
Aug 15, 2026
fd79a52
Launch Windows build wrappers through the command interpreter
Aug 15, 2026
b1d6049
Make the project-style Java AppHost sample work in the IDE
Aug 15, 2026
bc5a5a2
Stop the generated Java SDK from filling the user's Problems panel
Aug 15, 2026
d4a94a9
Prove the Java AppHost experience in a real VS Code
Aug 16, 2026
40737dc
Stop Quarkus rejecting the endpoint URL Aspire shows in the dashboard
Aug 16, 2026
49264c3
Add the Java grammar used by AppHost lenses
Aug 16, 2026
761c048
Parse Java AppHosts with tree-sitter
Aug 16, 2026
53fdbfb
Warn about Java Run and Debug from the parser path
Aug 16, 2026
295ad5d
Cover Java resource and entry point lenses
Aug 16, 2026
a6e4d18
Prove Java CodeLenses in the extension test harness
Aug 16, 2026
cea91b5
Make the Java E2E runner find local Java extensions
Aug 16, 2026
6ef6307
Unify Java build-tool detection
Aug 16, 2026
8834818
Fix four Java debugger defects in the VS Code extension
Aug 16, 2026
d907cf8
Centralize Java wrapper resolution
Aug 16, 2026
c5e80ce
Remove the unused Java toolchain command list
Aug 16, 2026
bcfc42e
Give the single-file Java AppHost an actual Java service to orchestrate
Aug 16, 2026
07e77a4
Align Java detection error coverage
Aug 16, 2026
93cd433
Remove the JavaFX playground
Aug 16, 2026
6931b4d
Snapshot the scaffolded Java AppHost template
Aug 16, 2026
dc4e9e7
Replace JavaFX desktop proof with Swing
Aug 16, 2026
4225fec
Ignore .java-build anywhere in the repository
Aug 16, 2026
76feaa1
Lock down Java publish JVM argument behavior
Aug 16, 2026
d6913a3
Call addJavaAppWithJar the way the generator emits it
Aug 16, 2026
97b5c39
Preserve publish diagnostics in shared Java detection
Aug 16, 2026
c25e588
Expect the generated Java SDK where javac needs it
Aug 16, 2026
744f80e
Explain why QuoteIfNeeded leaves quoted options alone
Aug 16, 2026
fb4d2ce
Preserve authored Java JAR paths across hosts
Aug 16, 2026
a3b396e
Defer Java framework build-tool selection
Aug 16, 2026
6cba689
Resolve the Java AppHost classpath before the adapter sees it
Aug 16, 2026
32820f7
Make the Java E2E shards actually run the Java specs
Aug 16, 2026
bab34b1
Stop Eclipse copying the Gradle AppHost's wrapper into bin/main
Aug 16, 2026
9f989c1
Collapse the two Java build-step resources into one
Aug 16, 2026
8db575f
Restore the truncated Java AppHost template snapshot
Aug 16, 2026
21260f2
Fix two Java hosting tests that could only pass on POSIX
Aug 16, 2026
86d3c04
Drive the request that the Java resource breakpoint needs
Aug 16, 2026
1cae0b4
Fully qualify the classpath test fixtures so they hold on Windows
Aug 16, 2026
614c93e
Assert the half of the no-agent test that was never checked
Aug 16, 2026
b974c8b
Preserve AppHostServer restore artifacts when the scaffold is unchanged
Aug 16, 2026
684b493
Keep CLI-scaffolded polyglot projects out of the repo build
Aug 16, 2026
3db2942
Let the backchannel connect timeout follow the AppHost startup budget
Aug 16, 2026
d5067ec
Build the OpenTelemetry agent before the application that loads it
Aug 16, 2026
6b2095c
Scope CLI path resolution per target and split the Java E2E shard
Aug 16, 2026
51b5499
Read the Java release from the build tool that actually builds
Aug 16, 2026
49c1d06
Forward the CLI path the extension actually launched
Aug 16, 2026
23b9ab8
Keep workspace-folder fixtures POSIX on Windows agents
Aug 16, 2026
4a433a8
Build the Quarkus fast JAR before the IDE launches it
Aug 16, 2026
0c2745a
Scope CLI resolution to the folder each operation belongs to
Aug 16, 2026
0550a32
Give the tokenized CLI path fixtures host-shaped folders
Aug 16, 2026
73926b0
Disable the Gradle daemon on every container build path
Aug 16, 2026
3d8b25a
Find the wrapper at the build root for module applications
Aug 16, 2026
9e182f3
Fix three CLI path and lifetime bugs in the debug path
Aug 16, 2026
68f74c7
Merge into an existing .vscode/settings.json instead of refusing to init
Aug 16, 2026
6328f92
Probe describe capabilities against the CLI each AppHost resolves to
Aug 16, 2026
5dfb2f2
Reject a build-produced OTel agent when the Dockerfile is authored
Aug 16, 2026
375f400
Run Windows build tool wrappers through call
Aug 16, 2026
f7f8ce2
Track --nologo support per CLI executable rather than per window
Aug 16, 2026
1b86238
Stage Quarkus legacy-jar packaging with the dependencies it needs
Aug 16, 2026
02eb967
Recognize a fully qualified Java CreateBuilder call
Aug 16, 2026
60805d6
Resolve the CLI path against the folder a command targets
Aug 16, 2026
2169e06
Poll for the Java CodeLens instead of reading it once
Aug 16, 2026
a6a15fa
Prove per-folder CLI resolution end to end
Aug 16, 2026
b2ae2aa
Restore the Java SDK twice so the test can see a stale refresh
Aug 16, 2026
b412e98
Fail the do command before asking which step to run
Aug 16, 2026
5838758
Reuse the CLI the availability gate already resolved
Aug 16, 2026
16b3ce7
Resolve the CLI path setting per folder and follow workspace trust
Aug 16, 2026
ea9113c
Activate the extension on a Java AppHost and fix the Windows test breaks
Aug 16, 2026
516cea6
Keep workspace-scoped CLI paths synchronized
Aug 16, 2026
e419a8d
Skip javac when the Java AppHost has not changed
Aug 16, 2026
a0bf7c5
Fix CliPathEnvironmentSynchronizer tests on Windows
Aug 16, 2026
d82c606
Use fully qualified workspace folder roots in CLI path tests
Aug 16, 2026
be82d7e
Only skip unchanged generated files for Java
Aug 16, 2026
718be38
Fix the E2E failures the Java shards uncovered
Aug 17, 2026
cc52334
Skip integration restore when its inputs are unchanged
Aug 17, 2026
73abfa6
Stop gitignoring the Java E2E workspace
Aug 17, 2026
eec2ddd
Warn when a configured CLI path is rejected, and harden restore skip
Aug 17, 2026
d4f0de7
Restrict trust-bundle and build-tool discovery to trusted paths
Aug 17, 2026
064428b
Stop the Java compile cache from reusing stale output
Aug 17, 2026
69d9413
Stop code generation and scaffolding from leaving files behind
Aug 17, 2026
b30ccfe
Give the Java template a Java service
Aug 17, 2026
a6e4888
Fix multi-root and privacy issues in the extension's CLI handling
Aug 17, 2026
386f7ce
Make a Java AppHost see its own arguments, and always build what it l…
Aug 17, 2026
29a8080
Let the Java playground publish
Aug 17, 2026
92a58e5
Merge remote-tracking branch 'upstream/main' into pr-18033-java
Aug 17, 2026
f08cba5
Stop Azure Container Apps from claiming a resource twice
Aug 17, 2026
c0367e0
Fingerprint the whole project graph before skipping a restore
Aug 17, 2026
3a5ac0f
Write generated files through one implementation
Aug 17, 2026
0681510
Redact resolved Java environments from debug configuration logs
Aug 17, 2026
2a7b43b
Stop the E2E diagnostics probe from accumulating editor tabs
Aug 17, 2026
01e6b6f
Reject a world-writable Maven or Gradle wrapper script
Aug 17, 2026
e35a0d3
Detect edits to nested Java packages in the compile up-to-date check
Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Aspire-Core.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"src\\Aspire.Hosting.EntityFrameworkCore\\Aspire.Hosting.EntityFrameworkCore.csproj",
"src\\Aspire.Hosting.Go\\Aspire.Hosting.Go.csproj",
"src\\Aspire.Hosting.Integration.Analyzers\\Aspire.Hosting.Integration.Analyzers.csproj",
"src\\Aspire.Hosting.Java\\Aspire.Hosting.Java.csproj",
"src\\Aspire.Hosting.JavaScript\\Aspire.Hosting.JavaScript.csproj",
"src\\Aspire.Hosting.PostgreSQL\\Aspire.Hosting.PostgreSQL.csproj",
"src\\Aspire.Hosting.Python\\Aspire.Hosting.Python.csproj",
Expand Down Expand Up @@ -57,6 +58,7 @@
"tests\\Aspire.Hosting.Analyzers.Tests\\Aspire.Hosting.Analyzers.Tests.csproj",
"tests\\Aspire.Hosting.Containers.Tests\\Aspire.Hosting.Containers.Tests.csproj",
"tests\\Aspire.Hosting.EntityFrameworkCore.Tests\\Aspire.Hosting.EntityFrameworkCore.Tests.csproj",
"tests\\Aspire.Hosting.Java.Tests\\Aspire.Hosting.Java.Tests.csproj",
"tests\\Aspire.Hosting.Rust.Tests\\Aspire.Hosting.Rust.Tests.csproj",
"tests\\Aspire.Hosting.Testing.Tests\\Aspire.Hosting.Testing.Tests.csproj",
"tests\\Aspire.Hosting.Tests\\Aspire.Hosting.Tests.csproj",
Expand Down
5 changes: 5 additions & 0 deletions Aspire.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<Project Path="src/Aspire.Hosting.GitHub.Models/Aspire.Hosting.GitHub.Models.csproj" />
<Project Path="src/Aspire.Hosting.Go/Aspire.Hosting.Go.csproj" />
<Project Path="src/Aspire.Hosting.Integration.Analyzers/Aspire.Hosting.Integration.Analyzers.csproj" />
<Project Path="src/Aspire.Hosting.Java/Aspire.Hosting.Java.csproj" />
<Project Path="src/Aspire.Hosting.JavaScript/Aspire.Hosting.JavaScript.csproj" />
<Project Path="src/Aspire.Hosting.Kafka/Aspire.Hosting.Kafka.csproj" />
<Project Path="src/Aspire.Hosting.Keycloak/Aspire.Hosting.Keycloak.csproj" />
Expand Down Expand Up @@ -368,6 +369,9 @@
<Project Path="playground/Redis/Redis.ApiService/Redis.ApiService.csproj" />
<Project Path="playground/Redis/Redis.AppHost/Redis.AppHost.csproj" />
</Folder>
<Folder Name="/playground/JavaSpringBoot/">
<Project Path="playground/JavaSpringBoot/JavaSpringBoot.AppHost/JavaSpringBoot.AppHost.csproj" />
</Folder>
<Folder Name="/playground/rust/">
<Project Path="playground/rust/Rust.AppHost/Rust.AppHost.csproj" />
</Folder>
Expand Down Expand Up @@ -538,6 +542,7 @@
<Project Path="tests/Aspire.Hosting.Garnet.Tests/Aspire.Hosting.Garnet.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.GitHub.Models.Tests/Aspire.Hosting.GitHub.Models.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.Go.Tests/Aspire.Hosting.Go.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.Java.Tests/Aspire.Hosting.Java.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.JavaScript.Tests/Aspire.Hosting.JavaScript.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.Kafka.Tests/Aspire.Hosting.Kafka.Tests.csproj" />
<Project Path="tests/Aspire.Hosting.Keycloak.Tests/Aspire.Hosting.Keycloak.Tests.csproj" />
Expand Down
1 change: 1 addition & 0 deletions eng/github-ci/test-trigger-map.yml
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ affected_project_rules:
- Aspire.AppHost.Sdk
- Aspire.Hosting.CodeGeneration.*
- Aspire.Hosting.Go
- Aspire.Hosting.Java
- Aspire.Hosting.JavaScript
- Aspire.Hosting.Python
- Aspire.Hosting.Rust
Expand Down
6 changes: 6 additions & 0 deletions extension/loc/xlf/aspire-vscode.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions extension/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,8 @@
"aspire-vscode.strings.rustLaunchConfigurationMissingExecutable": "The Aspire app host did not report which executable the Rust app in {0} produces, so there is nothing to debug.",
"aspire-vscode.strings.rustWindowsGnuDebuggerUnsupported": "The cppvsdbg debugger cannot debug Rust target {0} because GNU Windows targets use DWARF symbols. Install CodeLLDB or build an MSVC Rust target such as x86_64-pc-windows-msvc.",
"aspire-vscode.strings.rustDebuggerExtensionNotInstalled": "Rust AppHosts are launched through a native debugger extension. Install {0} from the Extensions view, then start the AppHost again.",
"aspire-vscode.strings.javaDisplayName": "Java: {0}",
"aspire-vscode.strings.javaLabel": "Java",
"aspire-vscode.strings.appHostLifecycleStartConfirmationTitle": "Start Aspire AppHost",
"aspire-vscode.strings.appHostLifecycleStopConfirmationTitle": "Stop Aspire AppHost",
"aspire-vscode.strings.appHostLifecycleStartConfirmationMessage": "Start the Aspire AppHost {0} in {1} mode?",
Expand Down
20 changes: 20 additions & 0 deletions extension/src/capabilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ export type Capability =
| 'browser' // Support for browser debugging (built-in to VS Code via js-debug)
| 'maui' // Support for running .NET MAUI projects
| 'ms-dotnettools.dotnet-maui' // MAUI debug adapter extension identifier
| 'java' // Support for running Java projects
| 'vscjava.vscode-java-debug' // Java debug adapter extension identifier
| 'azure-functions'; // Support for running Azure Functions projects

export type Capabilities = Capability[];
Expand Down Expand Up @@ -88,6 +90,19 @@ export function isBunInstalled() {
return isExtensionInstalled("oven.bun-vscode");
}

// The Java debug adapter cannot launch anything on its own: it resolves main classes, the
// classpath and project metadata through the redhat.java language server, which is why
// vscjava.vscode-java-debug declares redhat.java as an extension dependency and both ship together
// in the "Extension Pack for Java". java.ts also calls the redhat.java API directly to refresh the
// project configuration, so advertise Java support only when both are present.
// https://github.com/microsoft/vscode-java-debug#requirements
export const javaLanguageExtensionId = 'redhat.java';
export const javaDebugExtensionId = 'vscjava.vscode-java-debug';

export function isJavaInstalled(extensionInstalled: (extensionId: string) => boolean = isExtensionInstalled) {
return extensionInstalled(javaLanguageExtensionId) && extensionInstalled(javaDebugExtensionId);
}

export function getSupportedCapabilities(platform: NodeJS.Platform = process.platform): Capabilities {
const capabilities: Capabilities = ['prompting', 'baseline.v1', 'secret-prompts.v1', 'file-pickers.v1', 'build-dotnet-using-cli'];

Expand Down Expand Up @@ -138,6 +153,11 @@ export function getSupportedCapabilities(platform: NodeJS.Platform = process.pla
capabilities.push("ms-dotnettools.dotnet-maui");
}

if (isJavaInstalled()) {
capabilities.push("java");
capabilities.push(javaDebugExtensionId);
}

return capabilities;
}

Expand Down
22 changes: 22 additions & 0 deletions extension/src/dcp/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,28 @@ export function isMauiLaunchConfiguration(obj: any): obj is MauiLaunchConfigurat
return obj && obj.type === 'maui';
}

export interface JavaLaunchConfiguration extends ExecutableLaunchConfiguration {
type: "java";
request?: "launch" | "attach";
working_directory?: string;
// A fully qualified class name, optionally prefixed with a Java module name
// ("[module/]com.example.Api"), or the path of the .java source file declaring main. Absent when
// the IDE should resolve the entry point from the project's build files. A JAR path is never
// valid here; an executable JAR is sent on class_paths with its manifest Main-Class here.
// See src/Aspire.Hosting.Java/JavaLaunchConfiguration.cs.
main_class?: string;
// Classpath entries to launch the JVM with, used when the resource runs a prebuilt JAR. Absent
// when the IDE should resolve the classpath from the project itself.
class_paths?: string[];
// "maven" or "gradle", or absent when the resource runs a prebuilt JAR and therefore has no
// build files whose classpath the Java language server could refresh.
build_tool?: string;
}

export function isJavaLaunchConfiguration(obj: any): obj is JavaLaunchConfiguration {
return obj && obj.type === 'java';
}

export interface EnvVar {
name: string;
value: string;
Expand Down
7 changes: 6 additions & 1 deletion extension/src/debugger/debuggerExtensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import { debugProject, runProject } from "../loc/strings";
import { getEnvironmentWithoutE2EBridgeVariables, mergeEnvs } from "../utils/environment";
import { extensionLogOutputChannel } from "../utils/logging";
import { projectDebuggerExtension } from "./languages/dotnet";
import { isAzureFunctionsExtensionInstalled, isBunInstalled, isCsharpInstalled, isGoInstalled, isMauiInstalled, isPythonInstalled, isRustInstalled } from '../capabilities';
import { isAzureFunctionsExtensionInstalled, isBunInstalled, isCsharpInstalled, isGoInstalled, isJavaInstalled, isMauiInstalled, isPythonInstalled, isRustInstalled } from '../capabilities';
import { pythonDebuggerExtension } from "./languages/python";
import { nodeDebuggerExtension } from "./languages/node";
import { browserDebuggerExtension } from "./languages/browser";
import { azureFunctionsDebuggerExtension } from "./languages/azureFunctions";
import { goDebuggerExtension } from "./languages/go";
import { createDefaultRustDebuggerExtension } from "./languages/rust";
import { bunDebuggerExtension } from "./languages/bun";
import { javaDebuggerExtension } from "./languages/java";
import { mauiDebuggerExtension } from "./languages/maui";
import { isDirectory } from "../utils/io";
import { waitForRunStartIdle } from "./runStartRegistry";
Expand Down Expand Up @@ -114,6 +115,10 @@ export function getResourceDebuggerExtensions(platform: NodeJS.Platform = proces
extensions.push(createDefaultRustDebuggerExtension(platform));
}

if (isJavaInstalled()) {
extensions.push(javaDebuggerExtension);
}

extensions.push(nodeDebuggerExtension);
extensions.push(browserDebuggerExtension);

Expand Down
Loading
Loading