使用以下内容时,我会获得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
?
答案 0 :(得分:3)
您应该在课程的实例上调用getClass()
。
MyClass myClassInstance = new MyClass();
Class clazz = myClassInstance.getClass();
您正尝试在类对象
上调用它答案 1 :(得分:1)
您不必在clazz上调用getClass,否则您将获得Class.class而不是Foo.class。
所以它应该是:
Class clazz = Foo.class;
String path = new File(clazz.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";
答案 2 :(得分:0)
这取决于类的加载方式 - 例如,如果类是从Bootstrap classloader加载的。
请参阅here以获得更完整的答案。