У меня есть приложение J2EE, развернутое как файл EAR, который, в свою очередь, содержит JAR-файл для кода бизнес-уровня (включая некоторые EJB) и WAR-файл для кода веб-уровня. Файл EAR развернут в JBoss 3.2.5, который распаковывает файлы EAR и WAR, но не JAR-файл (это не проблема, это просто FYI).Получение абсолютного пути файла в JAR в EAR?
Один из файлов в файле JAR - это шаблон MS Word, абсолютный путь которого должен быть передан в некоторый собственный код MS Word (с использованием Jacob, FWIW).
Проблема заключается в том, что если я пытаюсь получить файл как это (внутри некоторого кода в файле JAR):
URL url = getClass().getResource("myTemplate.dot");
File file = new File(url.toURI()); // <= fails!
String absolutePath = file.getAbsolutePath();
// Pass the absolutePath to MS Word to be opened as a document
... то java.io.File
конструктор бросает IllegalArgumentException «URI не иерархическая ». URL и URI оба имеют один и тот же ToString() выход, а именно:
jar:file:/G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents/myapp.jar!/my/package/myTemplate.dot
Это большая часть пути действителен в файловой системе, а остальные нет (будучи внутренним для файла JAR):
G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents
Что является самым простым способом получить абсолютный путь к этому файлу?
Когда я нашел эту проблему, моя первая идея была «да, может быть, единственный способ написать временный файл!». И удивление, это единственный способ! Как может быть, что нет способа обработать путь в банке? Если вы можете получить поток, вы можете получить файл в идеальном мире. –