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

roy*_*g86 34 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);
Run Code Online (Sandbox Code Playgroud)

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

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

Rob*_*bin 63

主要方法是静态方法,因此尝试访问this(=当前的Object)将不起作用.您可以替换该行

URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys");
Run Code Online (Sandbox Code Playgroud)

  • 这正是OP所尝试的。更仔细地阅读问题。问题是他将 File 而不是 STring 传递给该方法。 (2认同)

小智 21

From:如何从Java中的静态方法调用getClass()?

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


ste*_*n35 10

老问题,但尚未说明.您可以从静态上下文执行此操作:

ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
Run Code Online (Sandbox Code Playgroud)


JB *_*zet 7

它无法编译,因为getResource将资源名称(a String,而不是a File)作为参数,以便使用类加载机制(来自类路径)加载资源.使用它File是没有意义的.如果要打开文件,只需使用a FileInputStream或a FileReader.

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