ti-enxame.com

Como obter getclass (). GetResource () de um contexto estático?

Eu tenho uma função na qual estou tentando carregar um arquivo em um objeto URL, porque o projeto de exemplo disse isso.

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);

Eu tentei usar SecureFTP.class.getResource, mas ainda não foi possível compilá-lo.

Eu sou bastante novo em Java, então sei que estou fazendo algo errado.

34
roymustang86

Ele não pode ser compilado porque getResource assume o nome de um recurso (a String, e não um File) como parâmetro, a fim de carregar um recurso usando o mecanismo de carregamento de classe ( do caminho da classe). Usá-lo com um File não faz sentido. Se você deseja abrir um arquivo, use um FileInputStream ou um FileReader.

Consulte http://docs.Oracle.com/javase/6/docs/api/Java/lang/ClassLoader.html#getResource%28Java.lang.String%29 e inclua a mensagem de erro do compilador da próxima vez que você tiver essa pergunta.

7
JB Nizet

O método principal é um método estático, portanto, tentar acessar this (= o objeto atual) não funcionará. Você pode substituir essa linha por

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

From: Como chamar getClass () de um método estático em Java?

Basta usar TheClassName.class em vez de getClass ().

20
Andres

Pergunta antiga, mas isso ainda não foi dito. Você pode fazer isso de um contexto estático:

ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
10
steven35
SecureFTP.class.getClassLoader().getResource(<<your resource name>>); 

Deve fazer o truque!

3
Mariam