java.lang.SecurityException: SHA1 digest error for ****

本文探讨了java.lang.SecurityException:SHA1digesterrorfor****异常的原因,指出这是由于jar包更新时出现冲突所导致的问题。文章进一步分析,表明混乱的jar包管理是引发此错误的关键因素,并提供了解决方案,强调了整理和规范jar包的重要性。

java.lang.SecurityException: SHA1 digest error for ****

2018/12/04    原因:jar包更新的时候冲突导致,所以可以推断出jar包混乱导致此异常出现

 

 

解决:整理jar包

HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 org.apache.jasper.JasperException: 无法为JSP编译类 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: 无法为JSP编译类 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 org.apache.jasper.JasperException: 无法为JSP编译类 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:619) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 java.lang.SecurityException: SHA-256 digest error for org/eclipse/jdt/internal/compiler/lookup/TypeIds.class sun.security.util.ManifestEntryVerifier.verify(Unknown Source) java.util.jar.JarVerifier.processEntry(Unknown Source) java.util.jar.JarVerifier.update(Unknown Source) java.util.jar.JarVerifier$VerifierStream.read(Unknown Source) sun.misc.Resource.getBytes(Unknown Source) sun.misc.URLClassPath$JarLoader$2.getBytes(Unknown Source) java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$100(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$100(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) org.eclipse.jdt.internal.compiler.Compiler.<init>(Compiler.java:289) org.eclipse.jdt.internal.compiler.Compiler.<init>(Compiler.java:213) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:543) org.apache.jasper.compiler.Compiler.compile(Compiler.java:398) org.apache.jasper.compiler.Compiler.compile(Compiler.java:368) org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看
最新发布
10-31
<think>嗯,用户遇到了一个JavaSecurityException错误,特别是与GoogleApiManager和SELinux相关的问题,具体错误信息是“SELinux denied com.google.android.gms”。我需要帮他们解决这个问题。首先,我应该回忆一下SecurityException的常见原因。根据用户提供的引用内容,SecurityException通常是因为权限检查失败,比如应用没有声明所需的权限,或者在调用某些API时权限不足。 首先,用户提到的错误涉及Google Play服务(com.google.android.gms),所以可能需要检查应用是否正确地声明了相关权限,比如INTERNET、ACCESS_NETWORK_STATE等。另外,可能涉及运行时权限,比如在Android 6.0以上需要动态请求某些权限。不过,如果是GoogleApiManager的问题,可能更多是Google Play服务本身的权限问题,或者是应用与Google Play服务之间的权限配置错误。 接下来,SELinux denied的错误提示说明可能有SELinux策略限制。SELinux在Android中用于增强安全性,但有时候第三方应用或服务可能会因为策略限制而无法执行某些操作,导致权限被拒绝。这时候可能需要查看SELinux的avc日志,分析具体的拒绝原因,然后调整策略。 步骤应该是这样的:首先检查应用权限,确保所有需要的权限都在AndroidManifest.xml中声明,并且如果是运行时权限,已经动态请求。然后,检查Google Play服务的版本是否正确,可能需要更新或重新安装Google Play服务。如果这些都正常,就需要查看SELinux的策略,通过adb logcat获取avc拒绝的日志,根据日志修改sepolicy或添加允许规则。不过,修改SELinux策略可能需要root权限,对于普通应用开发者来说可能不太现实,但如果是系统级应用或定制ROM的话可能可行。 另外,用户提到的错误信息中提到了com.google.android.gms,这可能涉及到Google Play服务的特定权限,比如BATTERY_STATS或者其他系统级权限。但普通应用通常不会声明这些权限,所以可能需要检查是否有错误地请求了这些权限,或者Google Play服务在特定环境下需要这些权限。 可能还需要考虑的是,是否在调用Google API时没有正确处理权限检查,比如在访问需要特定权限的API时,没有调用enforcePermission方法,导致SecurityException被抛出。这时候需要确保在调用这些API前进行了正确的权限检查,或者捕获异常并处理。 总结来说,解决方案可能包括以下几个步骤:检查并添加必要的权限、更新Google Play服务、分析SELinux日志并调整策略、确保代码中的权限检查正确。同时,需要分清楚是应用自身的权限问题,还是系统级的SELinux策略限制。</think>### 解决 `java.lang.SecurityException`(GoogleApiManager与SELinux相关) #### 1. **权限问题分析** - **应用权限缺失**:检查应用是否在 `AndroidManifest.xml` 中声明了所需权限(如网络权限、位置权限等)。例如: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` - **运行时权限未请求**:若涉及敏感权限(如定位),需在代码中动态申请权限(针对 Android 6.0+)[^1]。 #### 2. **Google Play服务配置** - **版本兼容性**:确保设备上的 Google Play服务版本与应用兼容,可通过以下代码检查: ```java GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context); ``` - **API密钥合法性**:验证 Google API 密钥是否有效,并正确绑定应用包名和签名。 #### 3. **SELinux策略问题** - **查看AVC日志**:通过 `adb logcat` 过滤 SELinux 拒绝记录: ```bash adb logcat | grep "avc: denied" ``` 示例输出: ``` avc: denied { connectto } for pid=1234 comm="gms" path="/data/socket" scontext=u:r:untrusted_app:s0 tcontext=u:r:init:s0 ``` - **调整SELinux规则**: - 若为系统级应用,可在设备源码的 SELinux 策略文件(`.te` 文件)中添加允许规则,例如: ```te allow untrusted_app init:unix_stream_socket connectto; ``` - 若为普通应用,需联系设备厂商或使用调试模式临时放宽策略。 #### 4. **代码层权限检查** - **显式捕获异常**:在调用 Google API 时添加异常处理: ```java try { // 调用 Google API 的代码 } catch (SecurityException e) { Log.e("SecurityException", "权限被拒绝: " + e.getMessage()); } ``` - **权限验证方法**:参考 `Context.checkCallingOrSelfPermission()` 进行权限检查[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值