Любой способ получить объект File из JAR - PullRequest
3 голосов
/ 03 февраля 2010

У меня есть JAR-файл, который содержит API, который использует внешние файлы модели. Я хотел бы включить файлы модели в сам JAR, чтобы его было проще использовать другим разработчикам. API будет принимать только объект File, есть ли способ сделать это? Я уже попробовал следующее, и они потерпели неудачу:

  • Использование class.getResourceAsStream (). Это будет работать, если API принимает InputStream.
  • Разбор пути к классам и попытка построить из записей (JAR будет отображаться как app.jar)

Полагаю, можно использовать getResourceAsStream и переместить файлы в постоянное место на жестком диске, но мне эта опция не нравится Должно быть что-то лучше, есть мысли?

1 Ответ

8 голосов
/ 03 февраля 2010

Ресурсы в файле .jar не являются файлами в том смысле, что ОС может обращаться к ним напрямую через обычные API доступа к файлам.

И поскольку java.io.File представляет именно такой тип файла (то есть вещь, которая выглядит как файл для ОС), его нельзя использовать для ссылки на что-либо в файле .jar.

Возможный обходной путь - извлечь ресурс во временный файл и сослаться на него с помощью File.

Обратите внимание, что обычно API, которые пытаются обрабатывать файлы, должны быть написаны так, чтобы обрабатывать InputStream / OutputStream, чтобы позволить этому типу операций преуспеть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...