You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1017,7 +1017,7 @@
1017
1017
{
1018
1018
"name": "debug_java_application",
1019
1019
"displayName": "Debug Java Application",
1020
-
"modelDescription": "Launch or attach to a Java application in debug mode with automatic compilation and classpath resolution. The tool handles building the project, resolving dependencies, starting the JVM with JDWP enabled, and auto-attaching the VS Code debugger. Use this as the first step to establish a debug session. The debug process runs in the background until stopped. Example usage: Debug a main class ('com.example.Main'), a JAR file ('target/app.jar'), or with program arguments (['--port=8080']).",
1020
+
"modelDescription": "Build and debug Java with automatic classpath resolution. On failure/timeout, diagnose; no automatic retry or terminal relaunch. Timeout is unconfirmed startup: check status once, do not stop the launch. Retry only after fixing the cause or explicit user request; check existing sessions first.",
Copy file name to clipboardExpand all lines: resources/instruments/javaDebugContext.instructions.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,4 +13,8 @@ For Java run/launch/debug/inspection requests, prefer the Java debug language mo
13
13
14
14
If both apply (e.g. "launch and break on entry of `Main.foo`"), load `java-launch-troubleshooting` first, then `java-debug-inspection` after the session is active.
15
15
16
-
Fall back to `run_in_terminal` only when `debug_java_application` returns "Java Language Server not ready" or "project not detected".
16
+
After the first launch failure or timeout, do not automatically retry `debug_java_application` or relaunch through terminal commands, including when Java Language Server is not ready or the project is not detected. Report the result and diagnose the cause.
17
+
18
+
A timeout means startup is unconfirmed, not necessarily failed. You may check `get_debug_session_info` once and inspect existing terminal output; do not enter a polling loop or terminate the original launch just because the wait expired.
19
+
20
+
Only start a new launch attempt after fixing an identified cause or when the user explicitly requests a retry. Check for an existing session first and do not replace it without explicit restart intent.
Copy file name to clipboardExpand all lines: resources/skills/java-debug-inspection/SKILL.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,6 +53,8 @@ These language model tools are contributed by the `Debugger for Java` extension
53
53
- The program is a non-Java language → do not load this skill
54
54
- The user is editing source code without an active debug session → do nothing
55
55
56
-
## Fallback
56
+
## Failure handling
57
57
58
-
If a tool returns "Java Language Server not ready" or repeats the same error twice, report the raw error to the user and stop calling debug tools for the current turn. Do not retry more than twice.
58
+
After the first failed inspection or control operation, report the error and diagnose its cause rather than automatically repeating the failed operation. Read-only diagnosis is allowed, but do not enter a polling loop.
59
+
60
+
Do not relaunch the application or fall back to terminal launch commands to recover from an inspection error. For launch failures or timeouts, follow `java-launch-troubleshooting`: a new launch attempt requires an identified cause to be fixed or an explicit user retry request, with an existing-session check first.
Copy file name to clipboardExpand all lines: resources/skills/java-launch-troubleshooting/SKILL.md
+8-4Lines changed: 8 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ These language model tools are contributed by the `Debugger for Java` extension
27
27
1.**Confirm intent.** Is the user trying to *run / start / launch / stop* a Java program (use this skill) or just edit code (do not load this skill)?
28
28
2.**Check existing session.** Call `get_debug_session_info` first. If a session is already running for the target, do not launch a second one.
29
29
3.**Launch.** Call `debug_java_application` with `target` = the fully qualified main class or JAR, and `workspacePath` = the project root containing `pom.xml`, `build.gradle`, or `.classpath`. Let `skipBuild` default to `false` so the tool handles compilation.
30
-
4.**Read the error.**If `debug_java_application` fails, the error message is structured (mainClass missing, classpath unresolved, build failure with line number). Use it to suggest a fix — do not retry with `run_in_terminal`.
30
+
4.**Stop on the first failure or timeout.**Report the returned result and diagnose the cause. Do not automatically retry `debug_java_application` or relaunch through `run_in_terminal`. A timeout means startup is unconfirmed, not necessarily failed; follow the failure-handling rules below.
31
31
5.**Stop when done.** When the user says "stop", "kill it", or has the answer they need, call `stop_debug_session`.
32
32
33
33
## Common Failure Modes
@@ -36,7 +36,7 @@ These language model tools are contributed by the `Debugger for Java` extension
36
36
|---|---|---|
37
37
|`mainClass is not configured` / `mainClass missing`| Project has no `launch.json`, and the file has no `public static void main`| Ask user which class to launch, or generate `launch.json`|
38
38
|`Could not resolve classpath`| Maven/Gradle import has not completed, or `pom.xml` has unresolved dependencies | Wait for Java Language Server import, then ask user to run `Java: Clean Java Language Server Workspace`|
39
-
|`Compilation failed` with file:line| Source code has a compile error | Fix the reported error in the source file, do not retry the launch|
39
+
|`Compilation failed` with file:line| Source code has a compile error | Fix the reported compilation error before attempting another launch; follow the failure-handling rules below|
40
40
|`Project not detected`|`workspacePath` does not contain a build file | Re-check `workspacePath`; for multi-module projects, use the module root, not the repo root |
41
41
42
42
## When NOT to Use This Skill
@@ -45,6 +45,10 @@ These language model tools are contributed by the `Debugger for Java` extension
45
45
- The user is already inside a live debug session and wants to inspect variables, evaluate expressions, walk the stack, step, or set / remove breakpoints → use `java-debug-inspection` instead, do not re-launch
46
46
- The program is a non-Java language → do not load this skill
47
47
48
-
## Fallback
48
+
## Failure handling
49
49
50
-
If `debug_java_application` returns `Java Language Server not ready` or repeats the same error twice, fall back to `run_in_terminal` with the appropriate `mvn` or `gradle` command and report the raw output to the user. Do not retry the debug tool more than twice.
50
+
After the first launch failure or timeout, stop automatic launch attempts, including when Java Language Server is not ready or the project is not detected. Do not use `run_in_terminal`, `mvn`, `gradle`, or raw `java` commands to bypass this rule.
51
+
52
+
You may inspect existing errors and terminal output. After a timeout, you may call `get_debug_session_info` once to check whether the original launch has become active. Do not enter a polling loop or terminate the original launch merely because the wait expired.
53
+
54
+
A new launch attempt is allowed only after fixing an identified cause or when the user explicitly requests a retry. Before that attempt, check for an existing session; do not replace an active session without explicit restart intent.
0 commit comments