Ik wil graag weten welke class-files er in een package zitten. Hier staat een codevoorbeeld om dit te doen, ik heb het ietsje aangepast. Het probleem is dat deze code nooit de gewenste output geeft.
output:
Package 'test' bestaat, maar directory.exists() geeft false. Dit terwijl hij wel een url kan construeren naar de directory. De directory bestaat dus wel, maar java kan/wil hem niet lezen?!
Als ik het probeer met de niet bestaande package 'test2' wordt de variable url null: het bestand kan niet worden gevonden, url.getFile() geeft nu een NullPointerException. Dat is wel volgens verwachting.
Ik heb dit getest in Windows XP met de JDK 1.4.2 en 1.5.0, beide met hetzelfde (negatieve) resultaat. Getest in respectievelijk Eclipse 3.0.2 en 3.1.
URI's, URL's, verschillende File constructors: ik heb vanalles geprobeerd en gezocht maar kom er niet uit. Classpath staat ook goed, aangezien hij de directory's prima kan vinden en ik zelfs niet eens een class laadt. Ik heb uitgebreid gedebugged maar kan geen aanwijzingen vinden.
Heeft er iemand een idee wat hier mis gaat?
Java:
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
| package test; import java.io.File; import java.net.URL; public class PackageList { private static void find(final String pckgname) { String name = new String(pckgname); if (!name.startsWith("/")) { name = "/" + name; } name = name.replace('.','/'); final URL url = PackageList.class.getResource(name); final File directory = new File(url.getFile()); if (directory.exists()) { final String[] files = directory.list(); for (int i = 0; i < files.length; i++) { if (files[i].endsWith(".class")) { System.out.println(files[i].substring(0,files[i].length()-6)); } } } else { System.out.println("No such dir: " + directory.getPath()); } } public static void main(String[] args) { find("test"); System.out.println(); find("test2"); } } |
output:
code:
1
2
3
4
5
| No such dir: C:\Program%20Files\eclipse\workspace\test\test
Exception in thread "main" java.lang.NullPointerException
at test.PackageList.find(PackageList.java:17)
at test.PackageList.main(PackageList.java:34) |
Package 'test' bestaat, maar directory.exists() geeft false. Dit terwijl hij wel een url kan construeren naar de directory. De directory bestaat dus wel, maar java kan/wil hem niet lezen?!
Als ik het probeer met de niet bestaande package 'test2' wordt de variable url null: het bestand kan niet worden gevonden, url.getFile() geeft nu een NullPointerException. Dat is wel volgens verwachting.
Ik heb dit getest in Windows XP met de JDK 1.4.2 en 1.5.0, beide met hetzelfde (negatieve) resultaat. Getest in respectievelijk Eclipse 3.0.2 en 3.1.
URI's, URL's, verschillende File constructors: ik heb vanalles geprobeerd en gezocht maar kom er niet uit. Classpath staat ook goed, aangezien hij de directory's prima kan vinden en ik zelfs niet eens een class laadt. Ik heb uitgebreid gedebugged maar kan geen aanwijzingen vinden.
Heeft er iemand een idee wat hier mis gaat?
How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.