Mijn vraag
Ik probeer te achterhalen hoe ik met interne resources hoor om te gaan met Java. Het werkt nu in mijn IDE of als jar. Maar het moet natuurlijk in alle gevallen werken.
In mijn echte project gaat het mis, maar ik kan het naspelen.
Relevante software en hardware die ik gebruik
Eclipse vanuit een Flatpack
Wat ik al gevonden of geprobeerd heb
File -> New -> Maven Project
Create a simple project
Use default Workspace location
Group Id: ExampleGroup
Artifact Id: ExampleId
We voegen plaatje toe aan "src/main/resources" map in de IDE
Maken een Class aan met Name: ExampleClass
Nou exporteren we deze als Jar:
File -> Export -> Runnable JAR file
Launch configuration: ExampleClass - ExampleID
Export destination: example.jar
Library handling: Copy required libraries into a sub-folder next to the generated JARAls ik de example.jar open in Ark dan zie ik dat het bestand staat in /resources/test.jpg.
Als ik de code aanpas naar "getResourceAsStream("resources/test.jpg")" en exporteer dan werkt het via de command line, maar dan faalt het weer in de IDE.
Ik probeer te achterhalen hoe ik met interne resources hoor om te gaan met Java. Het werkt nu in mijn IDE of als jar. Maar het moet natuurlijk in alle gevallen werken.
In mijn echte project gaat het mis, maar ik kan het naspelen.
Relevante software en hardware die ik gebruik
Eclipse vanuit een Flatpack
Wat ik al gevonden of geprobeerd heb
File -> New -> Maven Project
Create a simple project
Use default Workspace location
Group Id: ExampleGroup
Artifact Id: ExampleId
We voegen plaatje toe aan "src/main/resources" map in de IDE
Maken een Class aan met Name: ExampleClass
Java:
Nou runnen we die als "java application". Het resultaat is 1492534.1
2
3
4
5
| public class ExampleClass { public static void main(String[] args) throws Exception { System.out.println(ExampleClass.class.getClassLoader().getResourceAsStream("test.jpg").available()); } } |
Nou exporteren we deze als Jar:
File -> Export -> Runnable JAR file
Launch configuration: ExampleClass - ExampleID
Export destination: example.jar
Library handling: Copy required libraries into a sub-folder next to the generated JAR
java -jar example.jar
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.io.InputStream.available()" because the return value of "java.lang.ClassLoader.getResourceAsStream(String)" is null
Als ik de code aanpas naar "getResourceAsStream("resources/test.jpg")" en exporteer dan werkt het via de command line, maar dan faalt het weer in de IDE.