いくつかの静的ファイルを含むプレーンJavaライブラリ(jar)を開発中です。これはsrc/main/resources
になります。これらの静的ファイルは、アルゴリズムを実行し、処理されたデータをユーザーに返すために使用されます。jarライブラリ内の静的リソースを使用する(Androidで使用する)
public String getStringFromFile(String fileName) {
String text = "";
try {
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
Scanner scanner = new Scanner(file);
text = scanner.useDelimiter("\\A").next();
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return text;
}
これまでのところとても良いです。私はAndroidのプロジェクトでこのライブラリ/メソッドを使用しようとするとしかし、私が取得:
のjava.lang.NullPointerException:「はjava.lang.String型java.net.URL.getFileを仮想メソッドを呼び出すための試みを() 'ヌルオブジェクトリファレンスで
静的リソースファイルをライブラリに公開します。私は何か間違っているのですか?何かご意見は?
'classLoader.getResource(fileName).getFile()'は役に立たない。 'fileName'と同じ値を返すべきです。それはあなたが使うことのできるものを指しません。 'getResourceAsStream()'を試しても動作するかどうかは確認できますが、この種のJARリソースはAndroidではほとんど使用されません。 – CommonsWare
@CommonsWare '' getResourceAsStream() ''はどちらもうまくいかず、nullを返します。アンドロイドはクラスパス上で静的ファイルを見つけることができないので、* .aarを作成したくないので、これは本当に残念です。( – maslick
結果のapkをデコンパイルしようとしましたが、ロードしようとしているファイルがあります。それをルートディレクトリの '' unknown''フォルダに置きます。 – maslick