Здравствуйте, подскажите пожалуйста, каким образом мне задействовать ресурсы, упакованные в jar.
Я сделал класс загрузчик ресурсов
public class ResourceLoader {
ClassLoader cl = this.getClass().getClassLoader();
public File getFile(String fileName) throws URISyntaxException {
File file = null;
URL resource = cl.getResource(fileName);
file = new File(resource.toURI());
return file;
}
}
и использую его так
File message = resourceLoader.getFile("directory" + File.separator + "someFile.txt");
Все работает отлично. Затем, я собираю все в джарник (ресурсы тоже упаковывются).
Но при запуске джарника выдается ошибка, что строка file = new File(resource.toURI());
в классе Загрузчика
указывает на Null
java.lang.NullPointerException
что тут может быть не так
ArtOfLife
(Sergey Korol)
29.Октябрь.2015 12:17:24
#2
Попробуйте вместо
getResourceAsStream(fileName);
public class ResourceFile {
String filename;
ClassLoader currentClass;
private InputStream resourceStream;
/**
* Creates ResourceFile object
*
* @param filename relative path to test resource in project folder
*/
public ResourceFile(String filename) {
this.filename = filename;
this.currentClass = Thread.currentThread().getContextClassLoader();
this.resourceStream = this.currentClass.getResourceAsStream(this.filename);
}
/**
* Reads text from ResourceFile
*
* @return String with contents of ResourceFile
* @throws IOException
*/
public String read() throws IOException {
return IOUtils.toString(resourceStream, StandardCharsets.UTF_8.name());
}
public byte[] readAsBytes() throws IOException {
return IOUtils.toByteArray(resourceStream);
}
}
мы как-то так используем ресурсы
Do different tests instead of repeating the same tests
1 лайк