2013-08-15 2 views
1

Я пытаюсь прочитать файл внутри моей банки из другого класса внутри банки. Однако я постоянно получаю ту же ошибку: Caught: class java.io.FileNotFoundException при попытке прочитать метрики: metrics.ymlКласс Java Прочитал Ямль внутри Jar

Сначала у меня был код, похожий на этот код, предполагая, что это был путь от класса :

String yamlPath = ".." + File.separator + ".." + File.separator + ".." + File.separator + ".." + File.separator + "myYaml.yml"; 

InputStream in = new FileInputStream(new File(yamlPath)); 
InputStreamReader isr = new InputStreamReader(in); 
BufferedReader input = new BufferedReader(isr); 
yamlObj = (HashMap) javaYAML.load(input); 

Я также сделал это при условии, что может встать на путь от основания кувшина:

String yamlPath = "myYaml.yml"; 

InputStream in = new FileInputStream(new File(yamlPath)); 
InputStreamReader isr = new InputStreamReader(in); 
BufferedReader input = new BufferedReader(isr); 
yamlObj = (HashMap) javaYAML.load(input); 

Я тогда заметил эту нить How to read a file from jar in Java? и выяснил, что мне нужно «/» до моего дорожка. Я пробовал оба метода выше, используя косую черту.

String yamlPath = File.seperator + ".." + File.separator + ".." + File.separator + ".." + File.separator + ".." + File.separator + "myYaml.yml"; 

OR 

String yamlPath = File.seperator + "myYaml.yml"; 

Я полностью потерял, что делать с этой ошибкой. Есть ли что-то, что я не понимаю о структуре банки? Почему мой файл не найден. Заранее благодарим за любую помощь/информацию.

К сожалению, я забыл упомянуть, где он находится в ЕАО: Класс находится по следующему пути: ком/а/б/с/myclass.class YAML находится по следующему пути: myYaml.yml

не
+0

Это больше не файл в Джаре, где он находится точно в банке? –

+0

@JigarJoshi Извините. Теперь вопрос обновлен. –

ответ

2

файл внутри Jar больше не файл, создание изменений InputStream с этим

InputStream in = YourClass.class.getResourceAsStream("myYaml.yml"); 

Предполагая, что файл .yml находится в корне баночки

+0

Большое спасибо. Это работает. По какой-то причине я не заметил этого в другой теме. –

0
InputStream is = this.getClass().getClassLoader().getResourceAsStream("file"); 
Смежные вопросы