Трюки с созданием JAR-файла для использования в CLASSPATH

Сталкивались с ситуацией: сгенерировали программно jar-файл, подложили в classpath, а ресурсы из него не загружаются?

В чем загвоздка? Давайте разбираться.

Чаще всего jar-файл создается через класс JarOutputStream. И тут нужно учитывать правила наименования файлов/папок в архиве:

  • полные пути не должны начинаться с прямого слэша «/»
  • имена директорий должны заканчиваться прямым слэшем «/»
  • обратные слэши в пути не допустимы

Подробнее этот кейс разбирается в треде: https://stackoverflow.com/questions/1281229/how-to-use-jaroutputstream-to-create-a-jar-file