Как я могу установить рабочий каталог моего 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), но, возможно, это поможет вам найти другой путь.

Другие вопросы по тегам