Я прочитал каждый вопрос и ответ по этому вопросу, и я пробовал множество предлагаемых решений, ни один из которых не работает, в настоящее время я пытаюсь использовать ресурс URL метод, но url всегда возвращает null. Вот моя текущая настройка псевдо:Попытка прочитать файл ресурсов из jar
/src/java/pkg/name/is/long/meatpackage/MyClassFile.java
/SRC/Java/упак/имя/есть/длинный/meatpackage/MyResources/myresourcefile.txt
@SuppressWarnings("rawtypes")
Class thisClass = Class.forName("pkg.name.is.long.meatpackage.MyClassFile");
ClassLoader cLoader = thisClass.getClassLoader();
//note, I have tried a plethora of variations to the path for the file, this is just one example
URL url = cLoader.getResource("pkg/name/is/long/meatpackage/myresources/myresourcefile.txt");
System.out.println("Found the file!!: " + url);
Серьезно, это не может быть этого трудно включить текстовый файл в банке и получить доступ к нему во время выполнения может?
Когда я перечисляю банку, это показывает, что файл находится в pkg/name/is/log/meatpackage/myresources/myresourcefile.txt.
Другой подход я попытался это:
//along with multiple path combinations for the file the InputStream is always null.
//multiple paths include but are not limited to:
// "pkg/name/is/long/meatpackage/myresources/myresourcefile.txt"
// "/pkg/name/is/long/meatpackage/myresources/myresourcefile.txt"
// "/myresources/myresourcefile.txt"
// "/myresourcefile.txt"
// "myresourcefile.txt"
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("myresourcefile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
Итак, метод, в котором это вызвано, должен быть статическим? Я пробовал это до публикации, потому что это одно из предложений по аналогичному вопросу, но просто чтобы убедиться, что я попробовал его еще несколько минут назад. Ни один из методов getResourceAsStream не возвращает значение InputStream. Опять же, когда я перечисляю содержимое jar, файл есть, и я попытался поместить файл в почти каждое место, о котором вы можете думать. Хотя действительно целесообразно поместить его в каталог ресурсов в том же пакете с классом, я попытался переместить его в структуру каталогов, ничего не работает. – JoGotta
Static не имеет значения. Я изменил метод на static и использовал MyClassFile.class.getResourceAsStream безрезультатно. Я готов отказаться. – JoGotta
Нет, это не обязательно быть статичным. Убедитесь, что ваш файл находится в скомпилированном выходном каталоге и убедитесь, что ссылка на файл начинается с/если вы хотите разместить полный пакет. – AlBlue