Android-无法解析java.lang.StringIndexOutOfBoundsException
我很难找到解决方案,甚至无法找到这个错误的原因。此错误不存在于Eclipseused for testing中的同一代码中,但在Android Studio应用程序中使用时会因错误而崩溃 从Logcat:Android-无法解析java.lang.StringIndexOutOfBoundsException,java,android,eclipse,error-handling,Java,Android,Eclipse,Error Handling,我很难找到解决方案,甚至无法找到这个错误的原因。此错误不存在于Eclipseused for testing中的同一代码中,但在Android Studio应用程序中使用时会因错误而崩溃 从Logcat: java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:4020) a
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:4020)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4015)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ExceptionInInitializerError
at com.bmc.thirdparty.org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.<init>(ToStringStyle.java:2135)
at com.bmc.thirdparty.org.apache.commons.lang.builder.ToStringStyle.<clinit>(ToStringStyle.java:79)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:309)
at java.lang.Class.forName(Class.java:273)
at com.bmc.arsys.api.Config.if(Unknown Source)
at com.bmc.arsys.api.Config.applyDefaults(Unknown Source)
at com.bmc.arsys.apitransport.ApiConfig.<init>(Unknown Source)
at com.bmc.arsys.api.Config.<init>(Unknown Source)
at com.bmc.arsys.api.Config.<clinit>(Unknown Source)
at com.bmc.arsys.api.session.a.a(Unknown Source)
at com.bmc.arsys.api.session.a.<init>(Unknown Source)
at com.bmc.arsys.api.ARServerUser.<clinit>(Unknown Source)
at flashmanagment.app.ARS.initializeServer(ARS.java:41)
at flashmanagment.app.MainActivity.loadData(MainActivity.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4015)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.StringIndexOutOfBoundsException: length=1; regionStart=0; regionLength=3
at java.lang.String.startEndAndLength(String.java:504)
at java.lang.String.substring(String.java:1333)
at com.bmc.thirdparty.org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat(SystemUtils.java:1122)
at com.bmc.thirdparty.org.apache.commons.lang.SystemUtils.<clinit>(SystemUtils.java:818)
at com.bmc.thirdparty.org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.<init>(ToStringStyle.java:2135)
at com.bmc.thirdparty.org.apache.commons.lang.builder.ToStringStyle.<clinit>(ToStringStyle.java:79)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:309)
at java.lang.Class.forName(Class.java:273)
at com.bmc.arsys.api.Config.if(Unknown Source)
at com.bmc.arsys.api.Config.applyDefaults(Unknown Source)
at com.bmc.arsys.apitransport.ApiConfig.<init>(Unknown Source)
at com.bmc.arsys.api.Config.<init>(Unknown Source)
at com.bmc.arsys.api.Config.<clinit>(Unknown Source)
at com.bmc.arsys.api.session.a.a(Unknown Source)
at com.bmc.arsys.api.session.a.<init>(Unknown Source)
at com.bmc.arsys.api.ARServerUser.<clinit>(Unknown Source)
at flashmanagment.app.ARS.initializeServer(ARS.java:41)
at flashmanagment.app.MainActivity.loadData(MainActivity.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4015)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
从Java类:
public class ARS {
public static ARS instance = new ARS();
public static ARServerUser server;
public static ARS getInstance(){
return instance;
}
public void initializeServer(String user, String password){
server = new ARServerUser(user,password,null,"serverStringHere",portNumberHere);
}
同样,在Eclipse中使用相同的代码时没有出现错误。任何帮助都将不胜感激
编辑SystemUtils.java:1122
1118 private static float More ...getJavaVersionAsFloat() {
1119 if (JAVA_VERSION_TRIMMED == null) {
1120 return 0f;
1121 }
1122 String str = JAVA_VERSION_TRIMMED.substring(0, 3);
1123 if (JAVA_VERSION_TRIMMED.length() >= 5) {
1124 str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
1125 }
1126 try {
1127 return Float.parseFloat(str);
1128 } catch (Exception ex) {
1129 return 0;
1130 }
1131 }
你应该提供更多关于你的程序的信息,因为这段代码并不是全部。您正在尝试调用按钮单击,但应用程序的状态不正确 这似乎是库对Java版本格式做出一些假设的问题,在Eclipse和Android Studio这两种环境中,Java版本格式必须有所不同 变量/常量JAVA_VERSION_TRIMMED已设置为长度为1的值,但库假定它更长 为了进一步调试,您应该在SystemUtils第818行的静态初始值设定项块中设置断点,或者检查该行上发生的情况
一旦显示出来,您的选择就会有所不同。在这种情况下,您可能无法影响库。虽然Apache Commons Lang是开源的,并且可能会对其有所贡献,但您可能会发现通过BMC库传递这些更改会更加困难。什么是SystemUtils.java行1122?@immibis在文章中添加了这一点
1118 private static float More ...getJavaVersionAsFloat() {
1119 if (JAVA_VERSION_TRIMMED == null) {
1120 return 0f;
1121 }
1122 String str = JAVA_VERSION_TRIMMED.substring(0, 3);
1123 if (JAVA_VERSION_TRIMMED.length() >= 5) {
1124 str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
1125 }
1126 try {
1127 return Float.parseFloat(str);
1128 } catch (Exception ex) {
1129 return 0;
1130 }
1131 }