Отказано в доступе в связи с исключением системных свойств `user.dir` при запуске пакета war в vscode с плагином tomcat-for- java - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок в 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? Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 06 февраля 2020

С tomcat лучше всего работать с абсолютными путями (кроме любого файла только для чтения в войне)

Проверьте ссылку ниже

Как user.dir сконфигурирован для Tomcat servlets?

Свойство "user.dir" - это рабочая папка, в которой было выполнено Java (пример показан здесь), и вы не можете изменить ее даже при помощи свойства -D при выполнении JVM , Если вы хотите изменить значение «user.dir», вам нужно будет изменить папку, в которой запускается Java, чтобы запустить tomcat

...