如何从静态上下文中获取getclass()。getResource()?

时间:2011-12-02 20:03:18

标签: java url getresource

我有一个函数,我试图将文件加载到URL对象,因为示例项目是这样说的。

public class SecureFTP {

    public static void main(String[] args) throws IOException , ClassNotFoundException, SQLException , JSchException, SftpException{
        File file = new File("/home/xxxxx/.ssh/authorized_keys");
        URL keyFileURL = this.getClass().getClassLoader().getResource(file);

我尝试使用SecureFTP.class.getResource,但仍然无法编译它。

我对Java很新,所以我知道我做错了什么。

5 个答案:

答案 0 :(得分:62)

主要方法是静态方法,因此尝试访问this(=当前对象)将无效。 您可以通过

替换该行
URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys");

答案 1 :(得分:17)

来自:How to call getClass() from a static method in Java?

  

只需使用TheClassName.class而不是getClass()。

答案 2 :(得分:9)

老问题但是还没有说过。您可以从静态上下文中执行此操作:

ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");

答案 3 :(得分:6)

无法编译,因为getResource使用资源名称(String而不是File)作为参数,以便使用类加载机制加载资源(从类路径)。将它与File一起使用毫无意义。如果您要打开文件,只需使用FileInputStreamFileReader

请参阅http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29,并在下次出现此类问题时包含编译器错误消息。

答案 4 :(得分:3)

SecureFTP.class.getClassLoader().getResource(<<your resource name>>); 

应该做的伎俩!