百度地图API报错 Caused by: java.lang.IllegalStateException: you have not supplyed the global app context i

本文介绍了解决百度地图SDK在Android应用中初始化失败的问题。通过调整资源加载时机及顺序,确保SDK初始化前不加载资源文件,最终解决了初始化失败的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1. 使用如下帖子中的办法检查了AK没有问题:

http://bbs.lbsyun.baidu.com/archiver/?tid-5294.html

2. 自测试了DEMO运行也没有问题;

 

3. 代码在oncreate之后加入的

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //SDKInitializer.initialize(getApplicationContext());
        SDKInitializer.initialize(this.getApplicationContext());

也没有问题;

 

4. 于是,问题来了,为啥报了标题上的错误;

找了半天,发现,在此方法执行之前,一些资源类的加载都无法进行;

OverLayDemo.java中,在oncreate前边有如下这样一段:

 // 初始化全局 bitmap 信息,不用时及时 recycle
 BitmapDescriptor bdA = BitmapDescriptorFactory
   .fromResource(R.drawable.icon_marka);
 BitmapDescriptor bdB = BitmapDescriptorFactory
   .fromResource(R.drawable.icon_markb);
 BitmapDescriptor bdC = BitmapDescriptorFactory
   .fromResource(R.drawable.icon_markc);
 BitmapDescriptor bdD = BitmapDescriptorFactory
   .fromResource(R.drawable.icon_markd);
 BitmapDescriptor bd = BitmapDescriptorFactory
   .fromResource(R.drawable.icon_gcoding);
 BitmapDescriptor bdGround = BitmapDescriptorFactory
   .fromResource(R.drawable.ground_overlay);

 

此段代码使用了获取资源文件;

 

于是将这里的定义全部改为Null,然后在onCreate方法中的 SDKInitializer.initialize(this.getApplicationContext()); 执行之后,再将它们赋值;

问题解决;

 

demo为什么没问题,因为人家的application总类里边已经将环境初始化好咯;

 

java.lang.IllegalStateException: Failed to load property source from 'file:/E:/pg/%e4%b8%93%e5%ae%b6%e8%af%8a%e6%96%ad%e7%b3%bb%e7%bb%9f/%e4%b8%93%e5%ae%b6%e8%af%8a%e6%96%ad%e7%b3%bb%e7%bb%9f/target/classes/application.yml' (classpath:/application.yml) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:564) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:501) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:471) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$7(ConfigFileApplicationListener.java:450) at java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$8(ConfigFileApplicationListener.java:450) at java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:447) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$0(ConfigFileApplicationListener.java:350) at org.springframework.boot.context.config.FilteredPropertySource.apply(FilteredPropertySource.java:54) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:338) at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:229) at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:213) at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:203) at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:191) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:80) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:342) at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1247) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1236) at com.experts.ExpertsApplication.main(ExpertsApplication.java:23) Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1 at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218) at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) at org.yaml.snakeyaml.composer.Composer.checkNode(Composer.java:82) at org.yaml.snakeyaml.constructor.BaseConstructor.checkData(BaseConstructor.java:123) at org.yaml.snakeyaml.Yaml$1.hasNext(Yaml.java:489) at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:200) at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:164) at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:82) at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:632) at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:534) ... 25 common frames omitted Caused by: java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:281) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.io.InputStreamReader.read(InputStreamReader.java:184) at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125) at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) ... 43 common frames omitted 与目标 VM 断开连接, 地址为: ''127.0.0.1:11095',传输: '套接字'' 进程已结束,退出代码为 1
最新发布
07-23
Line 11624: 01-02 16:07:38.066 1864 3648 D TorchManagerService: onTorchModeChanged, mbTorchMode: true, mbDoSetTorchModeFalseByUs: false Line 11627: 01-02 16:07:38.066 3864 4015 I SystemUi--QuickSettings: FlashlightController-->onTorchModeChanged setTorchMode=true cameraId=0 Line 11733: 01-02 16:07:38.225 8570 8570 F DEBUG : #04 pc 0000000000012770 /vendor/lib64/mt6991/libmtkcam_devicemgr.so (NSCam::CameraDeviceManagerBase::setTorchMode(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)+464) (BuildId: d7dac32de39179042a63e9768c3c3cec) Line 11734: 01-02 16:07:38.225 8570 8570 F DEBUG : #05 pc 0000000000010bd0 /vendor/lib64/mt6991/libmtkcam_hal_android_device.so (mcam::android::ACameraDevice::setTorchMode(mcam::android::TorchMode)+96) (BuildId: 06829189d08cf0bd9ebdddfedaf9c685) Line 11735: 01-02 16:07:38.225 8570 8570 F DEBUG : #06 pc 0000000000018080 /vendor/lib64/mt6991/libmtkcam_hal_aidl_device.so (mcam::aidl::AidlCameraDevice::setTorchMode(bool)+304) (BuildId: 0e4806974081ccb6822e9018551e3626) Line 12430: 01-02 16:07:45.215 1411 7059 E cameraserver: setTorchMode Unable to set torch mode: Line 12432: 01-02 16:07:45.215 1411 7059 E CameraService: setTorchMode: Setting torch mode of camera "0" to 0 failed: Broken pipe (-32) Line 12450: 01-02 16:07:45.218 8532 8554 W roid.camera.cts: Long monitor contention with owner Instr: androidx.test.runner.AndroidJUnitRunner (8561) at void android.hardware.camera2.CameraManager$CameraManagerGlobal.setTorchMode(java.lang.String, boolean, android.content.AttributionSourceState, int)(CameraManager.java:2938) waiters=0 in void android.hardware.camera2.CameraManager$CameraManagerGlobal.onTorchStatusChanged(int, java.lang.String, int) for 7.152s Line 12494: 01-02 16:07:45.219 8532 8561 E TestRunner: android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): setTorchMode:3299: Setting torch mode of camera "0" to 0 failed: Broken pipe (-32) Line 12496: 01-02 16:07:45.219 8532 8561 E TestRunner: at android.hardware.camera2.CameraManager$CameraManagerGlobal.setTorchMode(CameraManager.java:2933) Line 12497: 01-02 16:07:45.219 8532 8561 E TestRunner: at android.hardware.camera2.CameraManager.setTorchMode(CameraManager.java:1649) Line 12498: 01-02 16:07:45.219 8532 8561 E TestRunner: at android.hardware.camera2.cts.FlashlightTest.resetTorchModeStatus(FlashlightTest.java:420) Line 12542: 01-02 16:07:45.219 8532 8561 E TestRunner: Caused by: android.os.ServiceSpecificException: setTorchMode:3299: Setting torch mode of camera "0" to 0 failed: Broken pipe (-32) (code 10) Line 12547: 01-02 16:07:45.219 8532 8561 E TestRunner: at android.hardware.ICameraService$Stub$Proxy.setTorchMode(ICameraService.java:1311) Line 12548: 01-02 16:07:45.219 8532 8561 E TestRunner: at android.hardware.camera2.CameraManager$CameraManagerGlobal.setTorchMode(CameraManager.java:2930) Line 12610: 01-02 16:07:45.223 1411 7059 E CameraService: setTorchMode: camera id is invalid 0 Line 12612: 01-02 16:07:45.223 3864 4015 E FlashlightController: java.lang.IllegalArgumentException: setTorchMode:3216: Camera ID "0" is a not valid camera ID Line 12614: 01-02 16:07:45.223 3864 4015 E FlashlightController: at android.hardware.camera2.CameraManager$CameraManagerGlobal.setTorchMode(CameraManager.java:2933) Line 12615: 01-02 16:07:45.223 3864 4015 E FlashlightController: at android.hardware.camera2.CameraManager.setTorchMode(CameraManager.java:1649) Line 12622: 01-02 16:07:45.223 3864 4015 E FlashlightController: Caused by: android.os.ServiceSpecificException: setTorchMode:3216: Camera ID "0" is a not valid camera ID (code 3) Line 12627: 01-02 16:07:45.223 3864 4015 E FlashlightController: at android.hardware.ICameraService$Stub$Proxy.setTorchMode(ICameraService.java:1311) Line 12628: 01-02 16:07:45.223 3864 4015 E FlashlightController: at android.hardware.camera2.CameraManager$CameraManagerGlobal.setTorchMode(CameraManager.java:2930) Line 13942: 01-02 16:07:45.914 1864 3648 D TorchManagerService: onTorchModeChanged, mbTorchMode: false, mbDoSetTorchModeFalseByUs: false Line 13947: 01-02 16:07:45.914 3864 4015 I SystemUi--QuickSettings: FlashlightController-->onTorchModeChanged setTorchMode=false cameraId=0
06-17
### Redis 连接池未打开导致的 `IllegalStateException` 解决方案 当遇到 Java 中 Redis 的连接池未打开而导致的 `IllegalStateException` 问题时,通常是因为应用程序尝试访问尚未初始化或已关闭的 Redis 连接池资源。以下是可能的原因分析以及解决方案。 #### 原因分析 1. **依赖版本不匹配** 如果使用的 Spring Boot 和 Redis 驱动程序之间的版本存在冲突,则可能导致连接池无法正常启动。例如,在 pom 文件中定义了 `<version>2.0.0</version>` 版本的 `spring-boot-starter-data-redis`[^1],而其他组件(如 Lettuce 或 Jedis 客户端)可能是较新的版本,这可能会引发兼容性问题。 2. **配置错误** 如果在应用配置文件(如 `application.properties` 或 `application.yml`)中缺少必要的 Redis 参数设置,或者参数值有误,也可能导致连接池未能成功创建。例如: ```properties spring.redis.host=localhost spring.redis.port=6379 ``` 3. **数据库连接管理工具的影响** 当使用 PostgreSQL 数据库并结合 Flyway 工具进行迁移时,如果数据库连接池(如 PgBouncer)运行于事务模式下,Flyway 可能会因为连接释放机制的问题丢失锁控制权[^2]。这种情况下,Redis 的连接池也可能会受到影响,尤其是在分布式环境中。 4. **安全认证失败** 若启用了 JAAS 登录模块或其他身份验证方式,但未正确提供凭证或令牌(参见 Spark Kafka 集群中的委托令牌说明[^3]),则可能导致连接被拒绝,从而抛出异常。 #### 解决方法 针对上述原因,可以采取以下措施来解决问题: 1. **确认依赖项一致性** 确保项目所引入的所有相关 jar 包均来自同一稳定版次系列。对于 Maven 构建环境来说,建议锁定所有子模块至特定版本号范围之内。比如调整 POM 如下所示: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.6</version> <type>pom</type> <scope>import</scope> </dependency> ``` 2. **完善配置选项** 添加更多细节到你的 Spring Boot 应用配置里去支持更复杂的场景需求。下面是一个完整的例子展示如何指定最大活跃数、最小闲置量等属性给 Redis Connection Pool 使用: ```yaml spring: redis: host: localhost port: 6379 timeout: 5s lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 ``` 3. **优化数据库交互策略** 考虑切换到池化模式下的 PgBouncer 设置以减少频繁断连带来的干扰;另外也可以通过编程手段捕获潜在风险点提前处理好可能出现的竞争条件状况。具体做法可参考官方文档关于 Session Lock Management 的部分描述。 4. **加强安全性校验流程** 对于涉及外部服务调用的情况务必遵循最佳实践完成相应授权操作后再发起请求动作。如果是基于 Kerberos 协议实现的身份鉴别过程的话,请参照给出的例子仔细核对自己这边是否有遗漏任何必要字段填写完整无误。 ```java // Example Code Snippet Showing How To Configure And Use A Customized RedisTemplate With Proper Exception Handling Mechanism In Place. @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){ final RedisTemplate<String, Object> template = new RedisTemplate<>(); try { template.setConnectionFactory(factory); // Set key serializer... StringRedisSerializer stringKeySeriaizer = new StringRedisSerializer(); template.setKeySerializer(stringKeySeriaizer); // Set value serialzer... etc return template; } catch(IllegalStateException e){ log.error("Failed to initialize Redis Template due to illegal state.",e); throw e; // Re-throw after logging so caller knows something went wrong. } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值