我有一个函数,我试图将文件加载到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很新,所以我知道我做错了什么。
答案 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
一起使用毫无意义。如果您要打开文件,只需使用FileInputStream
或FileReader
。
请参阅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>>);
应该做的伎俩!