Comment obtenir getclass().getResource() à partir d'un contexte statique?
j'ai une fonction où j'essaie de charger un fichier sur un objet URL
, parce que le projet exemple le dit.
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);
j'ai essayé d'utiliser SecureFTP.class.getResource
, mais il n'a pas pu le compiler.
je suis assez nouveau à Java, donc je sais que je fais quelque chose de mal.
5 réponses
il ne peut pas compiler car getResource
prend un nom de Ressource (un String
, et non un File
) comme paramètre, afin de charger une ressource en utilisant le mécanisme de chargement de classe (à partir du classepath). L'utiliser avec un File
n'a aucun sens. Si vous voulez ouvrir un fichier, utilisez simplement un FileInputStream
ou un FileReader
.
voir http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29 , et inclure le message d'erreur compilateur prochaine fois que vous avez une telle question.
la méthode principale est une méthode statique, donc essayer d'accéder à this
(=L'objet courant) ne fonctionnera pas.
Vous pouvez remplacer cette ligne par
URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys");
De: Comment appeler getClass() à partir d'une méthode statique en Java?
il suffit d'utiliser Leclassname.class au lieu de getClass().
question ancienne mais cela n'a pas encore été dit. Vous pouvez le faire à partir d'un contexte statique:
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
SecureFTP.class.getClassLoader().getResource(<<your resource name>>);
Devrait faire l'affaire!