Как получить 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, поэтому я знаю, что делаю что-то неправильно.
Ответы
Ответ 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");
Ответ 3
От: Как вызвать getClass() из статического метода в Java?
Просто используйте TheClassName.class вместо getClass().
Ответ 4
Старый вопрос, но пока этого не сказано. Вы можете сделать это из статического контекста:
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
Ответ 5
SecureFTP.class.getClassLoader().getResource(<<your resource name>>);
Сделайте трюк!