#java #javax.imageio
#java #javax.imageio
Вопрос:
Я осмотрелся и перепробовал много исправлений, но, похоже, не могу найти ни одного, который работает.
Я создаю простую игру frogger, и изначально все мои спрайты были загружены в каталог проекта, например img/spritename.png
:
image = ImageIO.read(getClass().getResourceAsStream("img/map.png"));
или
ImageIO.read(getClass().getResource(sprite));
Все работало отлично и отлично, но я решил переместить все свои изображения во внешний каталог, чтобы создать для него установщик.
"C:Program FilesDIRimg"
и все спрайты больше не загружаются.
Код, который, как я думал, исправит это, но не исправил
BufferedImage image = null;
File dir = new File(Config.imgDir "map.png");
try {
image = ImageIO.read(dir);
} catch (IOException e) {
e.printStackTrace();
}
if (image == null) {
return;
}
}
Код конфигурации:
public static String imgDir = "C:/Program Files/EmulousSoft/Frogger/img/";
У кого-нибудь есть какие-нибудь идеи? Я уверен, что это просто, но каждый раз, когда я пробую разные методы, я получаю "Value cannot be a null"
"cannot find directory"
или это.
Комментарии:
1. Я думаю, вам следует использовать path в Windows следующим образом C:\Program\Files\EmulousSoft
2. @hatefAlipoor Windows (и, как следствие, Java) поддерживает использование косой
/
черты в качестве разделителя путей, поэтому использованиеC:/Program Files/EmulousSoft/Frogger/img/
вполне допустимо.3. Какую точную ошибку вы получаете? Пожалуйста, опубликуйте полную трассировку стека.
4. @DmitriyPopov на самом деле я не получаю никаких ошибок, просто изображения не загружаются, когда я запускаю извне, а не внутри каталога проекта.
5. Убедитесь, что строка пути соответствует тому, что вы думаете, что это может быть:
System.out.println(Config.imgDir "map.png");
. Убедитесь, что он действительно существует:File dir = new File(Config.imgDir "map.png"); if (!dir.exists()) { System.err.println("Can not locate file!"); }
. Посмотрите, разрешено ли вам читать его из операционной системы:File dir = new File(Config.imgDir "map.png"); if (dir.exists() amp;amp; !dir.canRead()) { System.err.println("You don't have permission to read file!"); }
.