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
When setting shortenCommandLine to argfile (or setting to auto and then triggering the argfile behavior with a long command), VS Code will always put any vmArgs inside an argfile, even if the only VM arg is another argfile. This breaks run configurations that pass a user-generated argfile that still trigger the automatic CLI shortening behavior such as a very long classpath, since argfiles cannot be nested.
Environment
Operating System: Linux
JDK version: 17
Visual Studio Code version: 1.84.0-insider (60182c7e1a666961ded4d0319c154f52d85daf30)
Java extension version: v0.25.15
Java Debugger extension version: v0.54.0
Steps To Reproduce
Create a trivial Java project ex. a Hello World main method
Create an argfile myargs
Create launch.json with a corresponding run configuration for the main method. Set shortenCommandLine to argfile to force the argfile behavior (should be equivalent to setting auto and then loading a very long classpath).
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "java","name": "Hello","request": "launch","mainClass": "Hello","vmArgs": "@myargs","shortenCommandLine": "argfile"}]}
Attempt to run the main method - this should fail.
$ /usr/bin/env /path/to/jdk @/tmp/cp_7ifzraqswz8cni6w2z8m6nw3w.argfile Hello
Error: Could not find or load main class @myargs
Caused by: java.lang.ClassNotFoundException: @myargs
Pls set "shortenCommandLine": "none" as a workaround.
Yes, this works pretty well 😄
However, the reason the shortenCommandLine is getting triggered is because the CLI is getting long, and some projects with sufficiently long vmArgs + classpaths will end up triggering "Argument list too long" errors. This can typically be solved by putting the vmArgs directly into launch.json instead of an argfile, but this isn't always an option for us.
When setting
shortenCommandLine
toargfile
(or setting toauto
and then triggering the argfile behavior with a long command), VS Code will always put anyvmArgs
inside an argfile, even if the only VM arg is another argfile. This breaks run configurations that pass a user-generated argfile that still trigger the automatic CLI shortening behavior such as a very long classpath, since argfiles cannot be nested.Environment
60182c7e1a666961ded4d0319c154f52d85daf30
)Steps To Reproduce
myargs
launch.json
with a corresponding run configuration for the main method. SetshortenCommandLine
toargfile
to force the argfile behavior (should be equivalent to settingauto
and then loading a very long classpath).Sample project: test-argfile.tar.gz
Current Result
/tmp/cp_7ifzraqswz8cni6w2z8m6nw3w.argfile
contents:Expected Result
Program should execute and argfiles should not be nested
Additional Informations
The text was updated successfully, but these errors were encountered: