Как мне установить рабочий каталог моего Java-апплета в IDEA? - PullRequest
1 голос
/ 17 августа 2011

Я уже некоторое время пользуюсь IntelliJ, и я наслаждаюсь его набором функций, но мне трудно заставить работать конфигурации запуска для java-апплета.У меня есть уже существующий инструмент Java, который использует Swing, и я использую класс JApplet для загрузки этих объектов GUI в качестве апплета.Проблема в том, что у меня есть пара файлов конфигурации, которые мне нужно загрузить.Я загружаю их из рабочего каталога, и, насколько мне известно, этот рабочий каталог обычно является каталогом, в котором находится апплет.Я думаю, что основная проблема заключается в том, что IDEA устанавливает переменную запуска:

-Didea.launcher.bin.path=IDEA_BIN_DIR

Я хотел бы изменить это, но, похоже, не могу.Я попытался переопределить этот флаг, отредактировав параметры виртуальной машины запуска апплетов, но IDEA продолжит вставлять вышеупомянутый, даже если я укажу что-то другое.

Короче говоря, мне трудно загрузитьлокальный файл конфигурации, потому что я не могу установить рабочий каталог для конфигурации запуска в IDEA.Кто-нибудь знает, как обойти это или знает, как лучше использовать Java-апплеты, использующие файлы конфигурации, в IDEA?

1 Ответ

2 голосов
/ 17 августа 2011

Апплет обычно запускается в песочнице в браузере, и такой апплет не может получить доступ к файловой системе локального компьютера по соображениям безопасности.

Таким образом, загрузка файлов конфигурации изфайловая система, и «рабочий каталог» не является полезным термином для апплета.

  • Если эти файлы изменяются редко (т.е. в принципе только разработчиком), вы можете поместить их вфайлы классов апплета (т.е. в файле jar или во время разработки в каталоге, где будут сгенерированы классы), и используйте class.getResource() или .getResourceAsStream() для их загрузки.

  • Если файлы конфигурации должны быть определены веб-мастером, разместите их на веб-сервере - либо в каком-то фиксированном месте относительно getCodeBase() или .getDocumentBase(), либо укажите их в качестве параметров для тега апплета в теге HTML.

  • Если это файлы конфигурации, специфичные для пользователя (которые апплет должен уметь записывать), вам нужно либо сохранить их на сервере и получить / сохранить в кормеЭто логин (т.е. вам нужна логика на стороне сервера), или вы бы сохранили их на стороне клиента.

    Текущий способ сделать это - использовать JNLP API (в javax.jnlp. *) - есть несколько интерфейсов, позволяющих сохранять постоянство или загружать / хранить данные (с пользователем, имеющим FileChooser).Кроме того, вы можете подписать свой апплет и запросить AllPermission от пользователя - тогда вы можете получить доступ к файловой системе.

Извините, ничего из этих ответов не отвечает на ваш первоначальный вопрос (я не используюИДЕЯ), но, возможно, это поможет вам найти другой путь.

...