Разрешения для Java-приложения в Ubuntu - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть приложение NetBeans RCP, которое в настоящее время работает на Windows, и я пытаюсь сделать Linux совместимым.Приложение создает папки и файлы, а также изменяет файлы.

Оно отлично работает в Windows без каких-либо изменений, но в Ubuntu не может создавать папки во время запуска.Я знаю, что это проблема разрешения.

Какие у меня варианты?

Может ли само приложение назначать необходимые ему разрешения, запустив скрипт с использованием ProcessBuilder?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Вам необходимо либо создать необходимые папки как часть процесса установки, либо ограничить свой ввод-вывод папками, к которым у вас есть доступ (домашняя страница пользователя и временная папка). Обратите внимание, что в Linux есть стандартные места, где должно быть размещено много папок, и что администраторы будут недовольны приложениями, которые не соответствуют этим стандартам.

Можете ли вы сказать, какие файлы / папки вам нужны для каких целей?

Похоже, что причиной проблемы является различие в разделителе пути между Windows и Linux. В Linux вы должны использовать обычные слэши. В ошибке упоминается путь:

/home/javier\marauroa.trace.db

Поскольку \ не является разделителем пути, а является escape-символом, он пытается создать файл в папке / home, для которого у него нет разрешений.

Путь должен быть:

/home/javier/marauroa.trace.db

Возможно, вы захотите поместить файлы своих приложений в подпапку с именем .yourappname, чтобы она стала

/home/javier/.yourappname/marauroa.trace.db

Это то, что делают многие приложения Unix и скрывают это в обычных списках файлов. Чтобы получить разделитель пути для системы, в которой работает ваше приложение, вы можете использовать следующее статическое поле:

java.io.File.seperator
0 голосов
/ 07 апреля 2011

Все зависит от того, кто вы, когда запускаете процесс в Ubuntu, и путь к папкам, которые вы пытаетесь создать.Есть ли у этого пользователя права на создание папок в этом каталоге?Какие данные вы записываете на диск?Можете ли вы использовать независимый от платформы механизм, ориентированный на пользователя, например, Java Preferences или, возможно:

System.getProperty("user.home") -или- System.getProperty("java.io.tmpdir")?

...