vscode-java-debug icon indicating copy to clipboard operation
vscode-java-debug copied to clipboard

The **wildcard** classPath in `classPaths` configuration only works when `console` is set to `internalConsole`

Open superlucky8848 opened this issue 1 year ago • 1 comments
trafficstars

image

The wildcard classPath in classPaths configuration only works when console is set to internalConsole. Is this a normal situation?

As the image showed, I add custom classpath of plugins with wildcard for my app to load. Howerver it only works when using internalConsole.

Environment
  • Operating System: Windows 10 22H2
  • JDK version: Oracle JDK 1.8.0_301
  • Visual Studio Code version: v1.87.2
  • Java extension version: v0.25.15
  • Java Debugger extension version: v0.56.2
Steps To Reproduce
  1. Create normal java project
  2. In launch.json add some custom classpath in classPaths configuration with wildcard in path. ie ${workspaceFolder}/extraCp/*
  3. Add some jar files in extra classpath
  4. In launch.json set console to internalConsole.
  5. In Main(), get system classloader and print every urls it loads.
  6. Run Main() and you can see jar files in extra classpath is loaded.
  7. In launch.json set console to integratedTerminal or externalTerminal.
  8. Run Main() again and no jar files in extra classpath is loaded.

superlucky8848 avatar Mar 19 '24 14:03 superlucky8848

When launching the app using the integrated/external terminal, the debugger is only responsible for generating the command line and send it to the terminal to start the app. We do not perform any wildcard scaling. This is equivalent to manually running a Java app in cmd with -cp xyz/*. If Java command line doesn't support wildcards in the classpath argument, the execution will fail.

testforstephen avatar Mar 25 '24 07:03 testforstephen