次の手順に従って commons-codec-1.10.jar をインポートしました。
- de app ディレクトリの下に libs ディレクトリを作成しました
- libs ディレクトリ内の .jar を手動でコピーしました
- android-studio 内の .jar を右クリックし、[ライブラリとして追加] をクリックします。
私のbuild.gradeにこの行を追加しました
compile fileTree(dir: 'libs', include: ['*.jar'])
私のクラスでは、次のようにライブラリをインポートしました。
import org.apache.commons.codec.binary.Base64;
次に、次のようにBase64内のencodeBase64String静的メソッドにアクセスしようとしました:
public static class DoThisThing {
public String DoThisOtherThing() {
String hashed = "hello";
String hash = Base64.encodeBase64String(hashed.getBytes());
return hash;
}
}
public class ActivityThing extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_thing);
String hash = DoThisThing.DoThisOtherThing();
System.out.println(hash);
}
}
アプリを実行するときを除いて、コンパイルしても問題はありません。次のエラーがスローされ、アプリがシャットダウンします。
11-03 09:41:27.719 2390-2476/com.myproject E/AndroidRuntime: Caused by: java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)
ちなみに、私の DoThisThing クラスはアクティビティ内にはありません。短くするためです。ライブラリを確認しましたが、encodeBase64String は静的です。だから私は何をすべきか正確にはわかりません。私は Java と Android 環境が初めてです。だからどんな助けでも大歓迎です