JavaHelp: загрузить справочный набор из внешнего файла JAR

Я работаю с автономной программой Java, которая использует систему javahelp для файлов справки. В программе есть несколько встроенных "модулей", которые пользователь может выбрать во время выполнения для выполнения различного анализа данных. Я добавляю возможность запуска подключаемых модулей, которые размещаются в папке подключаемых модулей, чтобы другие разработчики могли создавать свои собственные алгоритмы.

Я начал с файлов.class в папке плагинов, вместе с файлом javahelp.hs и вспомогательными документами (.xml,.html,.map и т. Д.). Я смог прочитать файл.hs из папки плагинов и слиться с справочной системой основных программ, никаких проблем.

Затем я собрал все файлы в банку, потому что именно так мы предполагаем, что большинство разработчиков распространяют свои плагины. Файлы.class все еще загружаются и работают, но теперь я больше не могу загружать файл.hs. Для класса HelpSet требуется URL-адрес с расположением файла.hs. Должен ли я сказать, чтобы заглянуть внутрь файла JAR? Любая помощь будет оценена.

1 ответ

На тот случай, если у кого-то возникла такая же проблема, моей проблемой был формат имени пути, который я использовал для доступа к файлу справки из файла jar. Формат (из раздела 4.6.7 руководства пользователя JavaHelp, найденного здесь) должен формировать URL как:

URL helpSetLoc = new URL("jar:file:" + File.separator + pluginList.get(i).getJarFile()+"!/"+pluginList.get(i).getHelpSetName());

мой getJarFile() Метод возвращает имя файла JAR (включая абсолютный путь). мой getHelpSetName Метод возвратил имя пакета и имя справочной службы, разделенные косой чертой, как в myPlugin/pluginHelp.hs,

Моя проблема заключалась в том, что я использовал File.separator между именем пакета и именем файла справочной системы, что возвращало обратную косую черту в Windows. Я также попробовал двойную обратную косую черту, которая сделала то же самое. Мне пришлось использовать косую черту, иначе конструктор HelpSet не смог найти файл.

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