Как я могу установить рабочий каталог моего Java-апплета в IDEA?
Я уже некоторое время пользуюсь IntelliJ и наслаждаюсь его набором функций, но мне сложно заставить работать конфигурации java-апплета. У меня есть уже существующий инструмент Java, который использует Swing, и я использую класс JApplet для загрузки этих объектов GUI в качестве апплета. Проблема в том, что у меня есть пара файлов конфигурации, которые мне нужно загрузить. Я загружаю их из рабочего каталога, и, насколько мне известно, этот рабочий каталог обычно является каталогом, в котором находится апплет. Я думаю, что основная проблема заключается в том, что IDEA устанавливает переменную запуска:
-Didea.launcher.bin.path=IDEA_BIN_DIR
Я хотел бы иметь возможность изменить это, но я, кажется, не могу. Я попытался переопределить этот флаг, отредактировав апплеты, запустив параметры конфигурации виртуальной машины, но IDEA продолжит вставлять вышеупомянутый, даже если я укажу что-то другое.
Короче говоря, мне трудно загрузить локальный файл конфигурации, потому что я не могу установить рабочий каталог для конфигурации запуска в IDEA. Кто-нибудь знает, как обойти это или знает лучший способ запуска апплетов Java, которые используют файлы конфигурации, в IDEA?
1 ответ
Апплет обычно запускается в песочнице в браузере, и такой апплет не может получить доступ к файловой системе локального компьютера по соображениям безопасности.
Таким образом, обычно плохая идея загружать файлы конфигурации из файловой системы, и "рабочий каталог" не является полезным термином для апплета.
Если эти файлы изменяются редко (т.е. в принципе только разработчиком), вы можете поместить их в файлы классов апплета (то есть в файл jar или во время разработки в каталог, где будут сгенерированы классы) и использовать
class.getResource()
или же.getResourceAsStream()
загрузить их.Если файлы конфигурации должны быть определены веб-мастером, поместите их на веб-сервер - либо в каком-то фиксированном месте относительно
getCodeBase()
или же.getDocumentBase()
или укажите их в качестве параметров для тега апплета в теге HTML.Если это специфичные для пользователя файлы конфигурации (которые апплет должен уметь записывать), вам нужно либо сохранить их на сервере и получить / сохранить после входа в систему (т.е. вам нужна логика на стороне сервера), либо вы должны сохранить их на стороне клиента.
Текущий способ сделать это - использовать JNLP API (в javax.jnlp.*) - есть некоторые интерфейсы, позволяющие сохранять постоянство или загружать / хранить данные (с пользователем, имеющим FileChooser). Кроме того, вы можете подписать свой апплет и запросить AllPermission от пользователя - тогда вы можете получить доступ к файловой системе.
Извините, ничего из этого не отвечает на ваш первоначальный вопрос (я не использую IDEA), но, возможно, это поможет вам найти другой путь.