如何从静态上下文中获取 getclass().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 的新手,所以我知道我做错了什么。

原文由 roymustang86 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 371
2 个回答

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

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

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 Robin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题