44

我有一个函数,我试图将文件加载到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 还很陌生,所以我知道我做错了什么。

4

5 回答 5

71

main 方法是静态方法,因此尝试访问this(= 当前对象)将不起作用。您可以将该行替换为

URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys");
于 2011-12-02T20:05:52.577 回答
27

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

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

于 2015-04-30T13:26:03.137 回答
19

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

ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
于 2017-02-02T19:38:47.117 回答
10

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

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

于 2011-12-02T20:09:44.420 回答
4
SecureFTP.class.getClassLoader().getResource(<<your resource name>>); 

应该做的伎俩!

于 2014-05-28T14:11:35.973 回答