android java.lang.IllegalStateException: System services not available to Activities before onCreat

本文详细解释了在Android开发过程中遇到的非法状态错误:SystemServicesUnavailableToActivitiesBeforeOnCreate。主要原因是错误地使用new关键字实例化Activity类。正确的做法是通过startActivity方式实例化Activity对象,以确保Activity的初始化过程得以完整执行。

转载自:http://blog.youkuaiyun.com/centralperk/article/details/7496877



android异常:java.lang.IllegalStateException: System services not available to Activities before onCreate()


     出现这种情况一般是因为 通过使用new关键字实例化Activity类,这样是错误的。因为Activity是系统通过ActivityManagerService创建管理的。 new之后,创建了对象,但没有创建这个Activity,要知道Activity的对象和在Android中真正表示的东西,不是一样的。 对象创建完成后,需要系统对其进行一系列的init和管理。在这个创建的过程中,会回调Acitivity中的onCreate方法,这个方法调用之后,才能说明Activity是创建完成了。


     所以就不能使用new关键字实例化Activity对象,要通过startActivity的方式,实例化这个Activity对象。

### Apache Zeppelin MultiException IllegalStateException IllegalArgumentException解决方案 在解决 Apache Zeppelin 中的 `MultiException` 问题时,需要明确其根本原因。根据提供的引用信息[^1],`MultiException` 包含了多个异常类型,其中包括 `java.lang.NullPointerException`、`java.lang.IllegalStateException` 和 `java.lang.IllegalArgumentException`。以下是对这些异常的具体分析和解决方案。 #### 1. 异常分析 - **`java.lang.NullPointerException`** 此异常通常表明某个对象未被正确初始化或赋值即被调用。在 Apache Zeppelin 的上下文中,这可能是由于某些配置文件缺失或依赖项未正确加载导致的。需要检查 Zeppelin 的配置文件(如 `zeppelin-site.xml`)以及相关依赖库是否完整。 - **`java.lang.IllegalStateException: Unable to perform operation`** 此异常表明在不适当的状态下调用了某个操作。例如,引用中提到的 `create on weblogic.management.partition.admin.PartitionManagerService` 和 `resolve on com.oracle.weblogic.lifecycle.core.PartitionLCMService`,这可能与 WebLogic 管理服务的状态有关。确保所有分区和服务都已正确启动并处于活动状态。 - **`java.lang.IllegalArgumentException: While attempting to resolve the dependencies`** 此异常通常与依赖解析失败有关。例如,引用中提到的 `com.oracle.weblogic.lifecycle.core.PartitionLCMService` 的依赖解析错误。需要检查 Zeppelin 的依赖管理工具(如 Maven 或 Gradle),确保所有依赖项版本兼容且无冲突。 #### 2. 解决方案 ##### (1) 检查配置文件 确保 Zeppelin 的配置文件(如 `zeppelin-site.xml` 和 `zeppelin-env.sh`)中没有遗漏或错误配置。特别是以下参数: ```properties zeppelin.interpreter.dir zeppelin.notebook.dir zeppelin.dep.localrepo ``` 如果这些路径不存在或不可访问,可能会引发 `NullPointerException` 或 `IllegalArgumentException`。 ##### (2) 更新依赖项 根据引用中的信息[^2],某些问题可以通过降级或升级依赖版本解决。例如: - 如果遇到 `PHOENIX-4056`,可以尝试降级 Phoenix 版本。 - 如果遇到 `SPARK-22968`,建议升级到 Spark 2.4.0 或更高版本以应用最新的补丁。 ##### (3) 调试 SQL 查询解析 如果问题出现在 SQL 查询解析阶段,可以参考引用中的代码片段[^3]。确保 SQL 语句语法正确,并验证 `TableEnvironmentImpl#sqlQuery` 方法中的 `parser.parse(statement)` 是否能够成功解析输入语句。如果解析失败,可能需要调整 SQL 语句或修复底层解析器逻辑。 ##### (4) 检查 Protobuf 序列化/反序列化 如果使用了 Protobuf 进行数据序列化/反序列化,可以参考引用中的代码实现[^4]。确保 `ProtobufSerdes` 类中的 `Parser<T>` 配置正确,并验证 Kafka Streams 的消息格式是否符合预期。 #### 3. 示例代码 以下是一个简单的示例,展示如何通过捕获异常来诊断问题: ```java try { // 初始化 Zeppelin 相关组件 initializeZeppelinComponents(); } catch (NullPointerException e) { System.err.println("NullPointerException: " + e.getMessage()); // 检查配置文件是否完整 } catch (IllegalStateException e) { System.err.println("IllegalStateException: " + e.getMessage()); // 检查服务状态是否正常 } catch (IllegalArgumentException e) { System.err.println("IllegalArgumentException: " + e.getMessage()); // 检查依赖项是否正确解析 } ``` #### 4. 注意事项 - 确保所有依赖项版本一致,避免因版本冲突导致的异常。 - 如果问题仍然存在,可以启用 Zeppelin 的调试日志,进一步定位问题根源。 - 在生产环境中,建议定期更新 Zeppelin 及其依赖项,以获取最新的安全补丁和功能改进。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值