Edw*_*uez 6 java android static-methods android-studio android-runtime
我按照以下步骤导入了commons-codec-1.10.jar:
在我的build.grade中添加了这一行
compile fileTree(dir: 'libs', include: ['*.jar'])
Run Code Online (Sandbox Code Playgroud)
在我的课上我导入了这样的库:
import org.apache.commons.codec.binary.Base64;
Run Code Online (Sandbox Code Playgroud)
然后我尝试在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);
}
}
Run Code Online (Sandbox Code Playgroud)
没有错,即使我编译,除非我运行应用程序,它会抛出以下错误,应用程序关闭:
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)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我的DoThisThing类不在活动内部,只是为了缩短它.我检查了库,确实是encodeBase64String是静态的.所以我不确切知道该怎么做,我是java和android环境中的新手.所以任何帮助将不胜感激
小智 9
更换
org.apache.commons.codec.binary.Base64
Run Code Online (Sandbox Code Playgroud)
对于
android.util.Base64
Run Code Online (Sandbox Code Playgroud)
并像这样更新你的方法.
public static class DoThisThing {
public String DoThisOtherThing() {
String hashed = "hello";
byte[] data = hashed.getBytes("UTF-8");
String hash = Base64.encodeToString(data, Base64.DEFAULT);
return hash;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7696 次 |
| 最近记录: |