|
|
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Всем привет. Вопрос очень простой и потому мне стыдно задавать его более опытным товарищам. В папке resources я положил несколько шаблонных файлов. Если при запуске к ним указывать прямой (полный) путь, то все работает ок. Также работает, если указать путь относительно Working Directory в настройках Run/Edit Configurations. Мне же хотелось бы указывать имя файла в папке resources, тем более, что в настройках проекта эта папка у меня настроена, как папка ресурсов. Гугл выдает Мавен, JSF, Spring и т. д. У меня же намного все примитивнее, но тем не менее даже примитивное должно работать должным образом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:01 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Class.getResourceAsStream() ClassLoader.getResourceAsStream() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:03 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczClass.getResourceAsStream() ClassLoader.getResourceAsStream() А если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:21 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoА если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream Можно getResource(), но лично мне он не импонирует, и я его стараюсь избегать. Локальные пути в проекте это строки. На худой конец URI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:23 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Еще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:30 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
scfЕще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл. getResource() не может "вернуть файл". Только URL. Просто в некоторых экзотических средах может оказаться что системного хэндлера для такого URL не предусмотрено, его только ClassLoader понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:39 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, не совсем :) Попробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile() Получите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:44 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
scfПопробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile() Да, с фига ли??? scfПолучите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл. URL getFile() это не java.io.File а конкретная часть пути URL. Извольте объясниться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:55 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Тут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Проект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 12:14 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили. GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого. О переносе на другой контейнер и речи ведь не может быть. Правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 12:29 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили. Коммерческая тайна, понимаете ли )) Ладно. Чуть больше инфы. Надо построить несколько отчетов в excel. Вся логика для этого уже готова (т. е. у меня есть уже данные в удобном для меня виде). Осталось запихать их в excel документ. Для этого есть несколько файлов-шаблонов excel. Им надо где-то располагаться. Логично, что в папке resources. И нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:05 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Каюсь, я все перепутал :-) Обычно File получают из URL вот так: new File(url.toURI()) Но для ресурсов в classpath-e ClassLoader.getResource может вернуть URL с протоколом jar:file:/, который, естественно, в File преобразовать не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:26 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. Вот он: 16706123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 14:07 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. Вот он: 16706123 Вы уж простите, если не понимаю Вас, не не то это. Вы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо получить String, который можно было бы передать в функцию (таков ее формат) и она нашла бы по данному адресу (в папке resources) файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 15:12 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoВы уж простите, если не понимаю Вас, не не то это. То. Вы просто странно как-то его интерпретируете. GeronemoВы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо InputStream - ресурс. String - идентификатор ресурса aka путь. Geronemoполучить String, который можно было бы передать в функцию (таков ее формат) идентификатор ресурса aka путь - смотри выше. Geronemoи она нашла бы по данному адресу (в папке resources) файл. А из файла она потом получает InputStream, так почему бы сразу ей не найти этот InputStream? И что "кривое" API такое требует "файл"? Вы понимаете что ресурс запакованый в jar или war это уже не файл файловой системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 15:27 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.У котяры есть "описатели развёртывания" - xml-файлы, где можно использовать ${catalina.base} и прочие свойства . Контейнер самостоятельно развернёт их в строковые значения. Для catalina.base - в абсолютный путь, даже если в строке запуска указан относительный. P.S. Отвыкайте использовать catalina.home в своих проектах. Как максимум - развернуть контекст с документацией самого Tomcat. P.P.S. Предполагается, что Tomcat - старше 5.5.36 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 16:26 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovGeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.У котяры есть "описатели развёртывания" - xml-файлы, где можно использовать ${catalina.base} и прочие свойства . Контейнер самостоятельно развернёт их в строковые значения. Для catalina.base - в абсолютный путь, даже если в строке запуска указан относительный. P.S. Отвыкайте использовать catalina.home в своих проектах. Как максимум - развернуть контекст с документацией самого Tomcat. P.P.S. Предполагается, что Tomcat - старше 5.5.36 ok, придется похоже со старшими что-то придумывать. появился еще один вопрос. Тут дело наверно и в самом деле в немного корявом API того модуля работы с xls, который я выбрал. В общем, 2-я проблема - API позволяет сохранить файл на диск. Но пользователю такое нафиг не надо, искать фиг знает где какой-то файл. Ему нужен открытый файл на мониторе. Я придумал решение - сохраняю файл со случайным именем в папку TEMP -destFileName = tmpPath + '\\' + "tmp" + System.currentTimeMillis() + ".xls" но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 19:37 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemoно теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС. Вот такое вот SecurityManager securityManager = new SecurityManager(); securityManager.checkExec(destFileName); выдает java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Users\IC5CE~1.BAK\AppData\Local\Temp\tmp1413387949488.xls" "execute") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 19:46 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Ничего не понимаю. При скачке файлов Стандартный ослик спрашивает; Запустить или скачать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 20:53 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemook, придется похоже со старшими что-то придумыватьВ 5.5 механизм тоже работает, но там были странные странности, если использовать два свойства в одной строке. Но, да, использовать 5.5 сейчас - странно.но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС.И что вам даёт "запуск" файла на сервере? А если на клиенте, то почему это вас волнует, если вопрос "Сохранить или запустить" задаёт браузер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 21:06 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
На некоторое время вопрос был отложен, но опять всплыл. Class.getResourceAsStream() ClassLoader.getResourceAsStream() Не работает. Поясню проблему еще раз, более подробно. К клиент-серверном приложении надо сделать отчеты Excel. Для этого есть файл-шаблоне excel и он лежит в папке resources. Надо как-то получить его, загрузить в InputStream. Перепробовал кучу всяких возможных способов разных путей. Копировал файл-шаблон в пакет к классу, который занимается этим файлом. Ничего не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 14:59 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Я делал вот так. Сначала я определяю точку старта приложения String startDIR = System.getProperty("user.dir"); - вернет вам строку а потом делаю так: private final File licenseFile = new File(startDIR, "Мий файл или папка"); Таким образом можно свободно двигаться на любом компе. (Кто думает что я ошибаюсь, возможно он будет прав, я тоже новичок в Джаве) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 15:40 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Очень странно, что на таком большом форуме никто не знает правильный ответ. Мне пришлось немного извращнуться и положить эксель-шаблоны в папку (=пакет) с файлом-классом-обработчиком этих файлов. Таким макаром все заработало. Но не уверен, что начальству понравится (мне вот не очень нравится). У нас тут нет аврала, чтобы все заработало любым путем. Хочется, чтоб все было правильно и на своих местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:06 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Я сам не пробовал делать, то, что хотите Вы, может и не понял полностью Вас. Но, если у Вас не получется, то можно попробовать сделать такое: Создать проперти файл и укажите там путь (и еще всякого, чтобы не использовался только для этого :)), если мавен используете для сборки, тогда почитайте про мавен и проперти файлы, я не особо помню детали. И потом в приложение считывать путь к файлу с проперти файл. или может это поможет: InputStream is = getClass().getClassLoader().getResourceAsStream("META-INF/logger.properties"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 18:16 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
С вопросом домтупа к файлам я разобрался. Теперь у меня такой вопрос. Как представить это юзеру. Сейчас у меня идет сохранение в папку Temp, но я так понимаю, что сохранение будет на сервер, а мне надо представить файл юзеру. И это из обычного класса, а не из сервлета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 11:05 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=143&tid=2125922]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 383ms |

| 0 / 0 |
