Java getClass()返回null,但Foo.class正在工作

Java getClass()返回null,但Foo.class正在工作,java,Java,使用以下命令时,我会得到一个NullPointerException: Class clazz = Foo.class; String path = new File(clazz.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + ""; 但是,当我使用以下选项时,它会起作用: String path = new File(Foo.class.getProtectionDomai

使用以下命令时,我会得到一个
NullPointerException

Class clazz = Foo.class;
String path = new File(clazz.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";
但是,当我使用以下选项时,它会起作用:

String path = new File(Foo.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

有没有办法绕过
NullPointerException

您应该在类的实例上调用
getClass()

MyClass myClassInstance = new MyClass();
Class clazz = myClassInstance.getClass();

您试图在类对象上调用它

您应该在类的实例上调用
getClass()

MyClass myClassInstance = new MyClass();
Class clazz = myClassInstance.getClass();

您正试图在类对象上调用它

您不必在clazz上调用getClass,否则将得到class.class而不是Foo.class

因此,它应该是:

Class clazz = Foo.class;
String path = new File(clazz.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

您不必在clazz上调用getClass,否则将得到Class.Class而不是Foo.Class

因此,它应该是:

Class clazz = Foo.class;
String path = new File(clazz.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

这取决于类的加载方式,例如,如果类是从


有关更完整的答案,请参阅。

这取决于类的加载方式,例如,如果类是从中加载的


有关更完整的答案,请参阅。

为什么在
Class
实例上调用
getClass
?你真的想要java的
类的java类吗?
Foo.class
已经是
类了。不要对它调用
getClass()
!为什么在
Class
实例上调用
getClass
?你真的想要java的
类的java类吗?
Foo.class
已经是
类了。不要对它调用
getClass()
!这仍然返回
NullPointerException
@tank-您必须检查该链中的哪个方法返回
null
。这仍然返回
NullPointerException
@tank-您必须检查该链中的哪个方法返回
null