我在项目中有一个自定义ClassLoader
,该加载了一个在运行时根据用户输入动态生成的类。对于构建它,我通常遵循此处this tutorial的指示,但由于类可能在运行时更改,因此使用URLClassLoader
作为父元素。
它对于加载类本身很好,但是一旦尝试加载关联的类,它将在下面的代码的第4行(NullPointerException
)上抛出stream.available()
,因为返回的流是空值。
//file is "java\lang\Object.class" when throwing the exception
private byte[] loadClassFileData(String file) throws IOException {
InputStream stream = parent.getResourceAsStream(file);
int size = stream.available();
byte buff[] = new byte[size];
DataInputStream in = new DataInputStream(stream);
in.readFully(buff);
return buff;
}
使用 getResourceAsStream()
的默认类加载器似乎无济于事。