Я новичок в VScode и плагине tomcat-for- java, я хочу запустить свое приложение с плагином, но я получил ошибку отказа в разрешении при запуске. При запуске код создаст временный файл и FileOutputStream, фрагмент кода, который генерирует исключение, выглядит следующим образом. Обратите внимание, что код находится в стороннем jar-файле, поэтому я не могу его изменить.
File myFile = new File("a.txt");
out = new FileOutputStream(myFile);
Я попытался с помощью оригинального tomcat запустить приложение с командной строкой ./startup.sh
в каталоге tomcat / bin, я вижу, что абсолютный путь к myFile равен path/to/tomcat/bin
, а при использовании плагина VScode tomcat абсолютный путь к myFile равен /a.txt
что точно не разрешено писать.
Я много искал об этой проблеме и удивился, что при создании файла относительного пути в tomcat путь будет user.dir
(системные свойства) + filename
, и будет определено user.dir
по пути запуска tomcat, который является path/to/tomcat/bin
, поскольку startup.sh
находится в этом каталоге.
Поэтому я попытался добавить параметры env в ВМ, передав user.dir
в customize JVM options
в VScode, путь к файлу был успешно изменен, но все равно получил исключение permission denied
. Я даже пытался изменить путь к файлу на тот же путь, что и исходный tomcat, но все равно не повезло.
Поэтому мне интересно, что такое системное свойство user.dir
при запуске пакета war, щелкнув правой кнопкой мыши пакет war затем выберите run on tomcat server
? Как я могу решить эту проблему?