2013-11-23 2 views
1

У меня есть файл X.json внутри abc.jar в его пути к классам. Существует метод ReadFile в abc.jar, который читает файл какКак читать файл внутри ресурсов jar из ouside jar

URL url = Abc.class.getClassLoader().getResource("X.json"); 
File file = new File(url.toURI());* 

, который читает его хорошо, если я запустить его в контексте флягу в то есть основной метод в некотором файле внутри abc.jar

Но когда readFile вызывается извне abc.jar из какого-либо другого кода, он сбой с java.lang.IllegalArgumentException: URI is not hierarchical

Как получить объект File, вызвав метод readFile извне контекста jar?

+0

Почему вы не опубликовали стек? – isnot2bad

+1

Файл представляет собой путь к файловой системе. Файл в банке не находится в файловой системе. Так что независимо от класса, из которого вы выполняете этот код, это не имеет смысла и не будет работать. Чтобы прочитать файл внутри jar, который находится в пути к классам, используйте 'Class [Loader] .getResourceAsStream()'. –

+0

Кажется, что это так же, как http://stackoverflow.com/questions/10144210/java-jar-file-use-resource-errors-uri-is-not-hierarchical – jCoder

ответ

2

К моменту развертывания эти ресурсы станут . В этом случае к ресурсу должен быть подключен URL вместо File. См. info page для тега, для способа формирования URL.

Смежные вопросы