サンプルプロジェクトがそう言っているので、ファイルを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にかなり慣れていないので、何か間違ったことをしていることを知っています。
クラスロードメカニズム(クラスパスから)を使用してリソースをロードするために、getResource
がパラメーターとしてリソース名(String
ではなくFile
)を取るため、コンパイルできません。 )。 File
とともに使用することは意味がありません。ファイルを開きたい場合は、FileInputStream
またはFileReader
を使用してください。
http://docs.Oracle.com/javase/6/docs/api/Java/lang/ClassLoader.html#getResource%28Java.lang.String%29 を参照し、コンパイラエラーメッセージを含めます次回そのような質問があります。
メインメソッドは静的メソッドであるため、this
(=現在のオブジェクト)にアクセスしようとしても機能しません。その行を次のように置き換えることができます
URL keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxx/.ssh/authorized_keys");
From: Javaの静的メソッドからgetClass()を呼び出す方法
GetClass()の代わりにTheClassName.classを使用してください。
古い質問ですが、これはまだ言われていません。これは静的コンテキストから実行できます。
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
classLoader.getResource("filename");
SecureFTP.class.getClassLoader().getResource(<<your resource name>>);
トリックを行う必要があります!