Подтвердить что ты не робот

Как получить 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, поэтому я знаю, что делаю что-то неправильно.

4b9b3361

Ответ 1

Он не может компилироваться, потому что getResource принимает имя ресурса (a String, а не a File) в качестве параметра, чтобы загрузить ресурс с помощью механизма загрузки класса (из пути к классам). Использование его с помощью File не имеет смысла. Если вы хотите открыть файл, просто используйте FileInputStream или FileReader.

См. http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29 и включите сообщение об ошибке компилятора при следующем вопросе.

Ответ 2

Основной метод - это статический метод, поэтому попытка доступа к this (= текущий объект) не будет работать. Вы можете заменить эту строку на

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

Ответ 4

Старый вопрос, но пока этого не сказано. Вы можете сделать это из статического контекста:

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

Ответ 5

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

Сделайте трюк!