Android/Java:Java:Exception调用Java.lang.Class.getSimpleName时由NullPointerException引起的初始化错误
我的应用程序上有一些崩溃日志。 以下是我的应用程序项目中的代码Android/Java:Java:Exception调用Java.lang.Class.getSimpleName时由NullPointerException引起的初始化错误,java,android,static,nullpointerexception,Java,Android,Static,Nullpointerexception,我的应用程序上有一些崩溃日志。 以下是我的应用程序项目中的代码 public class MessageCenter { private static final String TAG = MessageCenter.class.getSimpleName(); 这是发生错误的Java库源代码 public String getSimpleName() { if (isArray()) { return getComponentType().getS
public class MessageCenter {
private static final String TAG = MessageCenter.class.getSimpleName();
这是发生错误的Java库源代码
public String getSimpleName() {
if (isArray()) {
return getComponentType().getSimpleName() + "[]";
}
String name = getName();
if (isAnonymousClass()) {
return "";
}
if (isMemberClass() || isLocalClass()) {
return getInnerClassName();
}
int dot = name.lastIndexOf('.');
if (dot != -1) {
return name.substring(dot + 1);
}
return name;
}
我不知道为什么会这样。
这是Java基本API,没有参数
此外,它并没有很好地重现,我发现它只是出现在4.1.2安卓操作系统版本上。(我不确定其他操作系统版本)
下面是日志
03-09 18:24:08.547 W/ImageLoader(19218): memoryCache() and memoryCacheSize() calls overlap each other
03-09 18:24:08.547 W/ImageLoader(19218): diskCache() and diskCacheFileNameGenerator() calls overlap each other
03-09 18:24:08.547 W/ImageLoader(19218): diskCache(), diskCacheSize() and diskCacheFileCount calls overlap each other
03-09 18:24:08.547 W/ImageLoader(19218): diskCache(), diskCacheSize() and diskCacheFileCount calls overlap each other
03-09 18:24:08.547 D/ImageLoader(19218): Initialize ImageLoader with configuration
03-09 18:24:08.547 I/System.out(19218): Couldn't load jnicrash from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.esplanet.lounge-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.esplanet.lounge-1, /vendor/lib, /system/lib]]]: findLibrary returned null
03-09 18:24:08.547 D/dalvikvm(19218): processAnnotationValue failed on default for 'httpMethod'
03-09 18:24:08.547 D/dalvikvm(19218): processAnnotationValue failed on default for 'reportType'
03-09 18:24:08.557 D/CrashLogger(19218): CrashLogger is enabled for com.esplanet.lounge, intializing...
03-09 18:24:08.557 V/TloungeAppApi(19218): [LoungeAppApi] init(Context context) call
03-09 18:24:08.577 V/TloungeAppApi(19218): [LoungeApi] onServiceConnected = 1
03-09 18:24:08.587 V/TloungeAppApi(19218): [LoungeAppApi] call isMdnLogin
03-09 18:24:08.587 V/TloungeAppApi(19218): isMdnLogin() call
03-09 18:24:08.587 W/dalvikvm(19218): Exception Ljava/lang/NullPointerException; thrown while initializing Lcom/esplanet/pp/sdk/MessageCenter;
03-09 18:24:08.587 D/AndroidRuntime(19218): Shutting down VM
03-09 18:24:08.587 W/dalvikvm(19218): threadid=1: thread exiting with uncaught exception (group=0x416bad58)
03-09 18:24:08.587 E/CrashLogger(19218): CrashLogger caught a ExceptionInInitializerError exception for com.esplanet.lounge. Building report.
03-09 18:24:08.587 E/dalvikvm(19218): Invalid debug info stream. class Lcom/esplanet/pp/sdk/MessageCenter;; proto ()V
03-09 18:24:08.687 E/CrashLogger(19218): com.esplanet.lounge fatal error : null
03-09 18:24:08.687 E/CrashLogger(19218): java.lang.ExceptionInInitializerError
03-09 18:24:08.687 E/CrashLogger(19218): at com.esplanet.lounge.core.pushmgr.PushManager.initMessageCenter(PushManager.java:275)
03-09 18:24:08.687 E/CrashLogger(19218): at com.esplanet.lounge.core.pushmgr.PushManager.init(PushManager.java:263)
03-09 18:24:08.687 E/CrashLogger(19218): at com.esplanet.lounge.core.pushmgr.PushManager.access$8(PushManager.java:262)
03-09 18:24:08.687 E/CrashLogger(19218): at com.esplanet.lounge.core.pushmgr.PushManager$6.run(PushManager.java:235)
03-09 18:24:08.687 E/CrashLogger(19218): at android.os.Handler.handleCallback(Handler.java:733)
03-09 18:24:08.687 E/CrashLogger(19218): at android.os.Handler.dispatchMessage(Handler.java:95)
03-09 18:24:08.687 E/CrashLogger(19218): at android.os.Looper.loop(Looper.java:136)
03-09 18:24:08.687 E/CrashLogger(19218): at android.app.ActivityThread.main(ActivityThread.java:5090)
03-09 18:24:08.687 E/CrashLogger(19218): at java.lang.reflect.Method.invokeNative(Native Method)
03-09 18:24:08.687 E/CrashLogger(19218): at java.lang.reflect.Method.invoke(Method.java:515)
03-09 18:24:08.687 E/CrashLogger(19218): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
03-09 18:24:08.687 E/CrashLogger(19218): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
03-09 18:24:08.687 E/CrashLogger(19218): at dalvik.system.NativeStart.main(Native Method)
03-09 18:24:08.687 E/CrashLogger(19218): Caused by: java.lang.NullPointerException
03-09 18:24:08.687 E/CrashLogger(19218): at java.lang.Class.getSimpleName(Class.java:946)
03-09 18:24:08.687 E/CrashLogger(19218): at com.esplanet.pp.sdk.MessageCenter.<clinit>(MessageCenter.java)
03-09 18:24:08.687 E/CrashLogger(19218): ... 13 more
03-09 18:24:08.687 I/Process (19218): Sending signal. PID: 19218 SIG: 9
03-09 18:24:08.547 W/ImageLoader(19218):memoryCache()和memoryCacheSize()调用相互重叠
03-09 18:24:08.547 W/ImageLoader(19218):diskCache()和diskCacheFileNameGenerator()调用相互重叠
03-09 18:24:08.547 W/ImageLoader(19218):diskCache()、diskCacheSize()和diskCacheFileCount调用相互重叠
03-09 18:24:08.547 W/ImageLoader(19218):diskCache()、diskCacheSize()和diskCacheFileCount调用相互重叠
03-09 18:24:08.547 D/ImageLoader(19218):使用配置初始化ImageLoader
03-09 18:24:08.547 I/System.out(19218):无法从加载程序dalvik.System.PathClassLoader[DexPathList[[zip文件”//data/app/com.esplanet.lounge-1.apk“],NativelLibrary目录=[/data/app-lib/com.esplanet.lounge-1,/vendor/lib,/System/lib]]:findLibrary返回空值
03-09 18:24:08.547 D/dalvikvm(19218):processAnnotationValue在“httpMethod”的默认值上失败
03-09 18:24:08.547 D/dalvikvm(19218):processAnnotationValue在“reportType”的默认值上失败
03-09 18:24:08.557 D/CrashLogger(19218):为com.esplanet.lounge启用CrashLogger,初始化。。。
03-09 18:24:08.557 V/TloungeAppApi(19218):[LoungeAppApi]初始化(上下文)调用
03-09 18:24:08.577 V/TloungeAppApi(19218):[LoungeApi]服务连接=1
03-09 18:24:08.587 V/TloungeAppApi(19218):[LoungeAppApi]呼叫isMdnLogin
03-09 18:24:08.587 V/TloungeAppApi(19218):isMdnLogin()调用
03-09 18:24:08.587 W/dalvikvm(19218):异常Ljava/lang/NullPointerException;初始化Lcom/esplanet/pp/sdk/MessageCenter时抛出;
03-09 18:24:08.587 D/AndroidRuntime(19218):关闭虚拟机
03-09 18:24:08.587 W/dalvikvm(19218):threadid=1:线程退出时出现未捕获异常(组=0x416bad58)
03-09 18:24:08.587 E/CrashLogger(19218):CrashLogger捕获了com.esplanet.lounge的异常初始化错误异常。建筑报告。
03-09 18:24:08.587 E/dalvikvm(19218):调试信息流无效。Lcom/esplanet/pp/sdk/MessageCenter类;;原型()V
03-09 18:24:08.687 E/CrashLogger(19218):com.esplanet.lounge致命错误:null
03-09 18:24:08.687 E/CrashLogger(19218):java.lang.ExceptionInInitializeError
03-09 18:24:08.687 E/CrashLogger(19218):在com.esplanet.lounge.core.pushmgr.PushManager.initMessageCenter(PushManager.java:275)
03-09 18:24:08.687 E/CrashLogger(19218):位于com.esplanet.lounge.core.pushmgr.PushManager.init(PushManager.java:263)
03-09 18:24:08.687 E/CrashLogger(19218):在com.esplanet.lounge.core.pushmgr.PushManager.access$8(PushManager.java:262)
03-09 18:24:08.687 E/CrashLogger(19218):在com.esplanet.lounge.core.pushmgr.PushManager$6.run(PushManager.java:235)
03-09 18:24:08.687 E/crashloger(19218):在android.os.Handler.handleCallback(Handler.java:733)
03-09 18:24:08.687 E/CrashLogger(19218):在android.os.Handler.dispatchMessage(Handler.java:95)上
03-09 18:24:08.687 E/CrashLogger(19218):在android.os.Looper.loop(Looper.java:136)
03-09 18:24:08.687 E/CrashLogger(19218):在android.app.ActivityThread.main(ActivityThread.java:5090)
03-09 18:24:08.687 E/CrashLogger(19218):位于java.lang.reflect.Method.invokenactive(本机方法)
03-09 18:24:08.687 E/CrashLogger(19218):在java.lang.reflect.Method.invoke(Method.java:515)处
03-09 18:24:08.687 E/CrashLogger(19218):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
03-09 18:24:08.687 E/CrashLogger(19218):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
03-09 18:24:08.687 E/CrashLogger(19218):在dalvik.system.NativeStart.main(本地方法)
03-09 18:24:08.687 E/CrashLogger(19218):由以下原因引起:java.lang.NullPointerException
03-09 18:24:08.687 E/CrashLogger(19218):在java.lang.Class.getSimpleName(Class.java:946)
03-09 18:24:08.687 E/CrashLogger(19218):位于com.esplanet.pp.sdk.MessageCenter.(MessageCenter.java)
03-09 18:24:08.687 E/CrashLogger(19218):。。。还有13个
03-09 18:24:08.687 I/进程(19218):发送信号。PID:19218 SIG:9
如果有人想避免例外,请与我联系。
谢谢 这个
public String getSimpleName() {
if (isArray()) {
return getComponentType().getSimpleName() + "[]";
}
是一个实例方法,因为没有提到static关键字。您试图在静态上下文中调用该方法,即不是在对象上调用该方法,这就是初始值设定项错误的原因。
在调用此之前,需要对象的实例。请重试
private static final String TAG = new MessageCenter().getClass().getSimpleName();
或者,如果要维护静态引用
private static final String TAG = MessageCenter.class.getClass().getSimpleName();
我觉得你的信息中心课程有问题。你可以发布整个日志吗?我不能给你整个日志。因为它没有很好的复制和自动收集。谢谢你的快速回答@Droidekas。但是使用getClass()和不使用有什么区别呢?你知道为什么它不能100%繁殖吗?