findHelpSet возвращает нулевой URL-адрес при интеграции системы JavaHelp в мое приложение с использованием Eclipse

Я пытаюсь включить JavaHelp в свое приложение, разработанное для Eclipse.

Я сделал следующие вещи:

  1. Загрузите и извлеките библиотеку JavaHelp в подпапку рабочей области моего проекта.
  2. #P3#
    #P4# #P5# #P6# #P7#
  3. Я попытался создать как папку (New->Folder) с именем help_folder, так и исходную папку (New->Source Folder) с именем help_source_folder и поместить в них файл примера с именем Master.hs (я взял его из архива JavaHelp).

Затем изнутри моего приложения я сделал следующее:

try {
    ClassLoader loader = this.getClass().getClassLoader();
    URL url = HelpSet.findHelpSet(loader, "Master.hs");
    //alternatively : URL url = HelpSet.findHelpSet(loader, "help_folder/Master.hs");
    //alternatively: URL url = HelpSet.findHelpSet(loader, "help_source_folder/Master.hs");
    JHelp jhelp = new JHelp(new HelpSet(loader, url));
} catch (HelpSetException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

Теперь проблема заключается в следующем: объект HelpSet не может быть создан, так как null URL возвращается методом findHelpSet().

Я понятия не имею, как это решить. Может ли кто-нибудь поставить меня в правильном направлении?


person Heisenbug    schedule 23.10.2011    source источник


Ответы (2)


Убедитесь, что папка, которую вы создаете, находится внутри исходной папки вашего проекта (по умолчанию «src»). Если это не так, он не будет включен в выходную папку (по умолчанию «bin») при сборке проекта.

person obscuredlogic    schedule 14.11.2011

Есть две причины, по которым метод findHelpSet() возвращает null:

  1. Он не смог найти файл справки Master в вашем пути к классам. Это часто случалось со мной, когда я использовал IDE, потому что они компилируют все ваши классы в какой-то рабочий каталог и часто «забывают» копировать туда файлы с «неизвестными» расширениями, а hs — это расширение, которое скорее всего, неизвестно, если вы не добавите его в свою IDE вручную.

  2. Он мог найти его, но не мог прочитать. Это может быть связано с некоторыми проблемами безопасности. Кроме того, пустой файл считается файлом, из которого невозможно прочитать, что является ошибкой IMO, поэтому убедитесь, что в вашем мастер-файле есть какие-то данные.

person Oleg Mikheev    schedule 12.11.2011
comment
1) hs - это расширение, которое, скорее всего, неизвестно, если вы не добавите его в свою IDE. Спасибо за ответ. Знаете ли вы, как я могу добавить расширение в Eclipse? 2) это не то. Это обычный и доступный файл. Если я открою его с помощью нового файла(), он существует. - person Heisenbug; 13.11.2011
comment
@Heisenbug На самом деле я только что проверил последнюю версию Eclipse, и для нее не требуется указывать какое-либо расширение, любой файл должен быть доступен для скомпилированных классов Java ... - person Oleg Mikheev; 13.11.2011