Mac 版本IDEA "Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachie

本文解析了一个在Mac上运行Java应用程序时出现的错误信息,该错误与JavaAgent和IDE相关,尽管显示为错误但实际对程序运行无影响。文中提到此问题已在Java 9及1.8.152版本中修复。

objc[1111]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java (0x10d6c34c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10d79f4e0). One of the two will be used. Which one is undefined.


Stack Overflow说这是Mac上面Java的一个老Bug了,会在那些使用了Java Agent的IDE上运行应用时触发,但这个Error对程序是无影响的,可以无视。在Java 9和Java 1.8.152版本里已经修复了。


Class PLBuildVersion在AssetsLibraryServices.framework和PhotoLibraryServices.framework中重复实现,不确定使用哪一个,可尝试以下解决办法: #### 检查框架依赖 查看项目的框架依赖,确认是否真的需要同时引入这两个框架。如果可以只使用其中一个框架来满足需求,就移除另一个框架。在Xcode中,可通过项目设置 -> `Build Phases` -> `Link Binary With Libraries`来管理框架依赖。 #### 版本兼容性检查 确认使用的Xcode版本和iOS SDK版本是否有已知的兼容性问题。有时,更新到最新的Xcode版本或iOS SDK版本可能会修复此类重复实现的问题。 #### 联系框架开发者 若问题依旧存在,可联系这两个框架的开发者,反馈该重复实现的问题,寻求他们的帮助和解决方案。 #### 代码层面处理 在代码中尽量避免直接调用 `PLBuildVersion` 类,或者对其进行封装,确保在不同环境下都能正常工作。例如: ```objc @interface PLBuildVersionWrapper : NSObject + (id)sharedBuildVersion; @end @implementation PLBuildVersionWrapper + (id)sharedBuildVersion { // 这里可以添加逻辑来选择使用哪个框架中的PLBuildVersion // 例如根据运行时环境或者其他条件判断 // 以下只是示例,实际情况可能不同 id buildVersion = nil; // 假设先尝试从AssetsLibraryServices.framework获取 buildVersion = [NSClassFromString(@"PLBuildVersion") sharedBuildVersion]; if (!buildVersion) { // 如果获取失败,再尝试从PhotoLibraryServices.framework获取 buildVersion = [NSClassFromString(@"PLBuildVersion") sharedBuildVersion]; } return buildVersion; } @end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值