Using the snippet below throws me a null pointer exception, but i can't find the reason:
String path = ResourcesLoader.class.getResource("src/i3d/resourcesloader/libraries/lib.txt").toString();

Am i using the getResources
wrong? I even tried to enter the full path, like "D:\Workspace...", double backslashes, double forwardslashes but i get the exception of null pointer. The only thing i haven't tried is using java's path separator, but that shouldn't be a problem at this moment as it runs on Windows. What do i miss?
Thanks!
getResource
searches via the classloader, so typically and simplified in the classpath. The src
folder is not in the classpath – it only exists for the build. Depending on your build system (ANT, Maven, IDE internal) a resources folder may be merged into the classpath. You put your resource directly into the source folder which will also work (if the build process copies all non-Java resources to the class output folder or if the source folder is used for the output of the generated classes).
/
is the root for your resources if you use absolute resource locations. It is equivalent to the root within the src
folder. /i3d/resourcesloader/libraries/lib.txt
would be the correct way to access the resource.
It would be nicer to separate the resources in a separate folder that is merged by the build tool (e.g. in Maven: /src/main/java
, /src/main/resources
).
It seems you are using NetBeans?
Just create a folder called src\resources
, get your files inside there, and call this.getClass().getResource("lib.txt");
.
Netbeans will pack that properly when building and the resources will be in the main folder inside the jar, so you can get without having to specify their folder.
You should only provide relative path from your classloading point (ie without src
):
String path = ResourcesLoader.class.getResource("/i3d/resourcesloader/libraries/lib.txt").toString();
来源:https://stackoverflow.com/questions/9466631/java-relative-path