JVM по умолчанию classloader будет использовать родителя-classloader для загрузки ресурсов сначала: .
Lifepaths.class.getClass()
classloader bootstrap classloader
, таким образом getResourceAsStream
будет искать $JAVA_HOME только, независимо от пользователя, предоставленного classpath
. Очевидно, Lifepaths.txt не там.
Lifepaths.class
classloader system classpath classloader
, таким образом getResourceAsStream
будет искать пользовательский classpath
, и Lifepaths.txt там.
При использовании java.lang.Class#getResourceAsStream(String name)
, имя, которое не является запуском с [1 117]' / ', будет добавлено с [1 110] как префикс. Если Вы хотите, избегают этого, с помощью [1 111]. Например:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
String resourceName = "Lifepaths.txt";
InputStream resourceStream = loader.getResourceAsStream(resourceName);
With respect to the free developer question, you have to pay for it. The perks of S3 is that it's very cheap.