_LSOpenURLsWithCompletionHandler() failed for the application xxx with error -10671 问题

问题描述

mbp 2022 版更新了 macos 系统并关闭了 SIP 后,系统中安装的 ipad 上的应用无法正常启动,在终端中使用 open 命令运行报如下错误:

longyudeMacBookPro:~ longyu$ open -a "xxx"
_LSOpenURLsWithCompletionHandler() failed for the application /Applications/xxx.app with error -10671.
longyudeMacBookPro:~ longyu$

备注:程序名称仅供示例。

设备型号与版本信息

mbp 2022

mac version: macOs Monterey version 12.6

解决过程

  1. 查看应用权限 – 未发现异常
  2. 尝试修改应用权限 – 修改后仍旧无法启动
  3. 查看是否已有进程在运行 – 打开活动监视器,没有找到相关进程
  4. 思考能够正常运行时与不能正常运行时系统修改的项目
    怀疑与 SIP 的配置有关系。

解决方法

电脑关机,长按关机键进入恢复模式,打开终端,执行 csrutil enable 使能 SIP 后重启系统,重新进入系统后程序启动正常了。

网上搜索到的其它链接

https://www.reddit.com/r/MacOS/comments/qfrfzf/cant_launch_any_ipados_apps_on_my_m1_machine/

https://support.d-imaging.sony.co.jp/mac/security/11/en/index.html

其它问题

网上搜索了下 _LSOpenURLsWithCompletionHandler 此函数的返回值,没有找到 -10671 返回值的含义。关闭 SIP 的初衷是正常使用 dtrace 这个闻名已久的程序,关闭后既然有这样的副作用只能临时开启玩玩,不能一直开启使用。

<think>嗯,用户遇到了Spring Boot应用启动失败的问题,需要解决。首先,我应该按照系统指令的步骤来处理。用户提到启动失败时出现了ApplicationContext的错误,可能和配置或依赖有关。根据引用内容,用户可能用了Gradle的bootRun任务,所以需要检查构建配置是否正确,特别是插件和依赖的版本。 首先,用户应该查看启动时的错误日志,特别是ConditionEvaluationReport。Spring Boot在启动失败时会自动打印这个报告,里面会详细说明哪些条件不满足,导致某些Bean无法加载。比如,如果缺少某个配置或者依赖,报告里会有提示。比如,如果数据库配置缺失,DataSource相关的Bean就不会被创建,这时候需要检查application.properties或YAML文件中的配置是否正确。 然后,检查依赖冲突。根据引用[2],用户可能引入了MyBatis-Plus,这时候不应该再引入MyBatis和其starter,否则会有版本冲突。需要检查build.gradle或pom.xml文件,确保没有重复的依赖。可以用gradle dependencies或mvn dependency:tree命令来查看依赖树,找出冲突的库并排除掉。 接下来,检查配置文件的正确性。比如,数据库连接信息、端口占用、服务发现配置等。比如,如果端口8080被占用,应用启动会失败,这时候需要更换端口或者终止占用端口的进程。另外,配置文件中的属性是否有拼写错误,比如spring.datasource.url写成了spring.data.source.url,这样会导致配置不生效。 另外,检查Bean的创建是否有问题。比如,是否有循环依赖,或者某个Bean的依赖项无法注入。可以通过在启动类上添加@EnableAutoConfiguration(exclude={XXX.class})来排除自动配置类,看看是否解决了问题。或者使用@ComponentScan调整包扫描路径,确保Bean被正确扫描到。 还有,查看应用的日志级别设置为DEBUG,可以获取更详细的信息。在application.properties中添加logging.level.root=DEBUG,然后重新启动应用,看是否有更多的错误信息输出,帮助定位问题。 如果以上步骤都检查过,问题依然存在,可以考虑使用Spring Boot的Actuator端点,比如/health或/info,来查看应用的健康状态,但可能需要先解决启动问题才能访问这些端点。另外,确保IDE中的项目结构正确,比如资源文件是否被正确包含在构建路径中,有时候资源文件没被正确复制会导致配置读取失败。 最后,如果所有方法都试过还是不行,可以尝试创建一个最小化的可复现例子,逐步添加依赖和配置,直到问题出现,这样可以快速定位到具体是哪个部分引起的错误。</think>### Spring Boot应用启动失败问题的解决方案 #### 1. 查看错误日志定位根源 启动失败时,控制台会输出`ConditionEvaluationReport`,需重点关注以下部分: ```plaintext Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. ``` - **启用DEBUG日志**:在`application.properties`中添加: ```properties logging.level.root=DEBUG ``` 重新运行后,日志会显示具体导致失败的Bean或配置项,例如: ```plaintext Parameter 0 of constructor in com.example.service.MyService required a bean of type 'com.example.dao.MyDao' that could not be found. ``` 此类错误通常由**Bean未扫描到**或**依赖缺失**导致[^1]。 #### 2. 检查依赖冲突 根据引用[2],若项目中包含MyBatis-Plus,需检查`build.gradle`或`pom.xml`是否重复引入其他MyBatis组件: ```gradle // 错误示例:重复引入MyBatis implementation 'org.mybatis:mybatis:3.5.6' // 必须删除此行 implementation 'com.baomidou:mybatis-plus-boot-starter:3.4.3' ``` - **验证依赖树**: - Gradle项目运行`gradle dependencies > deps.txt` - Maven项目运行`mvn dependency:tree > deps.txt` 搜索`mybatis-spring-boot-starter`或`mybatis-spring`等冲突项并排除。 #### 3. 验证配置完整性 常见配置错误示例: ```properties # 数据库配置缺失 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root # 若密码未设置且数据库需要密码,则启动失败 ``` #### 4. 处理Bean加载问题 - **组件扫描范围**:若Bean不在主类包路径下,需显式指定扫描路径: ```java @SpringBootApplication @ComponentScan({"com.mainpackage", "com.external.module"}) public class Application { ... } ``` - **循环依赖**:若日志提示`The dependencies of some of the beans in the application context form a cycle`,使用`@Lazy`注解延迟加载: ```java @Service public class ServiceA { @Lazy @Autowired private ServiceB serviceB; } ``` #### 5. 调试Spring Boot启动过程 通过`--debug`参数直接获取条件评估报告: ```bash # Gradle项目 gradle bootRun --args='--debug' # Maven项目 mvn spring-boot:run -Dspring-boot.run.arguments=--debug ``` 报告会明确标注如`@ConditionalOnProperty`未匹配、`@ConditionalOnClass`缺少依赖等关键问题。 #### 6. 验证端口与外部服务 - **端口占用**:若提示`Web server failed to start. Port 8080 was already in use`,可通过以下命令终止进程: ```bash # Linux/Mac lsof -i:8080 | awk 'NR!=1 {print $2}' | xargs kill -9 # Windows netstat -ano | findstr :8080 taskkill /PID <PID> /F ``` 或在配置中修改端口: ```properties server.port=8081 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值