blob: 7289e6ea355f0440555aad15311e798c940d219b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
class ResourceNS
{
public static void main(String args[])
{
ResourceNS res = new ResourceNS();
res.displayResourceText();
}
public void displayResourceText()
{
/*
* Since Java SE 9, invoking getResourceXXX on a class in a named
* module will only locate the resource in that module, it will
* not search the class path as it did in previous release. So when
* you use Class.getClassLoader().getResource() it will attempt to
* locate the resource in the module containing the ClassLoader,
* possibly something like:
* jdk.internal.loader.ClassLoaders.AppClassLoader
* which is probably not the module that your resource is in, so it
* returns null.
*
* You have to make java 9+ search for the file in your module.
* Do that by changing Class to any class defined in your module in
* order to make java use the proper class loader.
*/
// Namespaces are relative, use leading '/' for full namespace
InputStream is =
ResourceNS.class.getResourceAsStream("/ns/ns1/HelloWorld.txt");
// C++: cout << is.readline(); // oh, well !
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
String out = "";
try{
out = reader.readLine();
} catch(IOException e) {
e.printStackTrace();
System.out.println(e);
}
System.out.println(out);
}
}
|