2016-12-29 3 views
0

Так что у меня возникла проблема с загрузкой файла при запуске моей программы из файла jar. Я знаю, что вопросы, очень похожие на это существуют, но я не могу найти ни одного, что работает для меня или делать то, что мне нужно. Я хотел бы загрузить файл объект из папки в моем банке, но когда я делаю, я получаю следующее сообщение об ошибке:URI не является иерархическим при загрузке файла из .jar

Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical 
     at java.io.File.<init>(Unknown Source) 
     at bbsource.BouncyBallV5.loadLevels(BouncyBallV5.java:370) 
     at bbsource.BouncyBallV5.<init>(BouncyBallV5.java:243) 
     at BBDriver.main(BBDriver.java:18) 

Line 370 выглядит следующим образом

initSource = new File(getClass().getResource("/resources/levels").toURI());

У меня нет никаких проблем с эта строка при запуске из Eclipse, но я знаю, что в файлах jar действуют разные вещи. Иерархия папки:

  • ЦСИ
    • Ресурсы
      • уровни
        • tier_one
          • Level1.cbbl
          • Level2.cbbl
        • tier_two
          • Level1.cbbl

уровней является каталогом, он не позволит мне доступ, и я не уверен, как заставить его работать. Я видел предложения, такие как использование InputStream, но я не уверен, как его использовать и по-прежнему рассматриваю его как файл, из которого я могу читать объекты.

Любая помощь будет оценена по достоинству.

ответ

3

Это потому, что /resources/levels - это каталог, а не файл. Проверьте ответы для this question

+0

И я использую его как каталог для доступа к его подкаталоги и в конечном итоге это файлы, но мне нужна структура, подобная каталогу, для целей индексирования. И я до сих пор не знаю, как я буду использовать 'InputStream' для этого. Был бы код на том, как я использую 'initSource' помощь? – Ryan

+0

Попробуйте использовать 'initSource = new File (getClass(). GetResource ("/resources/levels "). GetFile())' – AJA

+0

Это все еще работает в Eclipse, но я все еще получаю сообщение об ошибке при запуске в качестве jar из командной строки. Однако на этот раз ошибка является «NullPointerException». – Ryan

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