J'ai une fonction où j'essaye de charger un fichier dans un objet URL
, parce que l'exemple de projet l'a 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 toujours pas pu le compiler.
Je suis relativement nouveau à Java, donc je sais que je fais quelque chose de mal.
Il ne peut pas être compilé 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 ( du chemin de classe). L'utiliser avec un File
n'a aucun sens. Si vous souhaitez 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 du compilateur la prochaine fois que vous aurez 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?
Utilisez simplement TheClassName.class au lieu de getClass ().
Vieille question 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!