java.lang.NoSuchFieldError: android.support.v7.appcompat.R$styleable.Theme_w的解决办法

本文详细介绍了在Android项目中使用AppCompatActivity整合Fragment和ViewPager实现底部导航栏效果时,遇到资源找不到错误的解决方法。主要原因是Android SDK版本过低,通过更新SDK版本和build-tools及platform版本成功解决问题。

这几天在搞Fragment和ViewPager的整合,实现底部导航栏的效果,用到了AppCompatActivity,AppCompatActivity是在support library 22之后才有的。我的一开始是19的版本,后面去网上下了个22的support library导进去之后就可以编译通过了,但是运行却报了java.lang.NoSuchFieldError: android.support.v7.appcompat.R$styleable.Theme_w。想了很久。

我猜原因是:因为我建的Android项目最少支持是3.0的,所以会有一个appcompat_v7的项目关联到一起了,而在关联的项目里面的android.support.v7.appcompat包下的R.java文件是找不到styleable.Theme_w的,所以报了以上错误。后来我就把Android sdk manager里面的support library 更新为22.但是更新为22之后又遇到了新建项目时报了No resource found that matches the given name xxxx之类的错误。去网上搜了下,是因为Android sdk build-tools和sdk platform的版本太低了导致的。最后我把它们的版本到升级到22就可以解决了。

所以综上所述。报这个错误很有可能是你的sdk 版本太低了,升级之后就可以解决这个问题了。


No resource found that matches the given name

No resource found that matches the given name

No resource found that matches the given name

No resource found that matches the given name

No resource found that matches the given name

============================================================== 兼容包实际上是为了让android 2.2、android 2.3 android 3.0支持android 4.0中才有的东西的。 比如说Actionbar。如果你不用兼容包的话,你开发含actionbar的程序就不可以在2.2上运行了 Support v11 v12 v13 v14 v17 Android 4.2.2 v18 Android 4.3.1 v21 Android 5.0.1 v22 Android 5.1.1 v23 Android 6.0 这个工程默认的是v21 Anroid 5.0.1, 如果需要编译(v22 Android 5.1.1 或者 v23 Android 6.0)版本,请 分别将values-v22 或者 values-v23 复制到 appcompat\res. 这是因为编译appcompat 需要SDK的部分资源,如果你需要编译v22版本的 appcompat-v7-v22.jar, 却将values-v23 复制到appcompat\res,那么会提示部分资源不存在,除非你选用v23的编译工具。 导入工程的方法见: http://blog.csdn.net/judyge/article/details/49228579 ============================================================== 出现这样的错误,说明你的工程缺乏appcompat V7 包 使用adt开发新建一个Android app,选择支持的SDK版本如果小于11(Android3.0)就会报如下错误。 error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'. 官网给出的答案是: https://developer.android.com/tools/support-library/setup.html#add-library 简单来说就是新的eclipse默认模版主题UI需要使用比较高版本api,如果需要支持低版本,需要导入appCompact库来支持,网上一般给出的解法: File->Import (android-sdk\extras\android\support\v7). Choose "appcompat" Project-> properties->Android. In the section library "Add" and choose "appCompat" 包括stackoverflow上也有很多人遇到,但很多人通过这个解决,但我就是没办法解决。
Java 中,`NoSuchFieldError` 和 `ServletException` 是常见的异常,下面分别分析这两种异常的可能原因及解决办法: ### NoSuchFieldError: MALL_GOODSMINIMUMORDERQUANTITYSETTING_MESSAGE `NoSuchFieldError` 通常是由于类加载器加载的类版本不兼容,或者在编译和运行时类定义不一致所导致。以下是可能的解决办法: #### 1. 检查依赖版本 确保项目中所有依赖的版本是兼容的。若使用 Maven 或 Gradle 管理依赖,需检查 `pom.xml` 或 `build.gradle` 文件,确保没有不同版本的依赖冲突。例如,若有多个依赖引用了同一个类库,但版本不同,就可能引发该异常。可以使用 Maven 的 `dependency:tree` 命令查看依赖树,出冲突的依赖并排除它们: ```bash mvn dependency:tree ``` #### 2. 清理并重新构建项目 有时候,旧的编译文件可能会导致类版本不一致的问题。可以尝试清理项目的编译目录,然后重新构建项目。例如,在 Maven 项目中,可以使用以下命令: ```bash mvn clean install ``` #### 3. 检查类定义 确认 `MALL_GOODSMINIMUMORDERQUANTITYSETTING_MESSAGE` 字段确实存在于相应的类中,并且访问权限是正确的。检查类的定义文件,确保字段没有被意外删除或修改。 ### javax.servlet.ServletException `ServletException` 是 Servlet 编程中常见的异常,通常表示 Servlet 在处理请求时发生了错误。以下是可能的解决办法: #### 1. 检查 Servlet 配置 确保 Servlet 的配置是正确的,包括 `web.xml` 文件或者使用注解配置的 Servlet 类。检查 Servlet 的映射路径、初始化参数等是否正确。例如,在 `web.xml` 中配置 Servlet: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> ``` #### 2. 检查 Servlet 代码 检查 Servlet 类的代码,确保 `doGet`、`doPost` 等方法没有抛出异常。可以在方法中添加异常处理逻辑,捕获并记录异常信息: ```java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 处理请求的代码 } catch (Exception e) { // 记录异常信息 e.printStackTrace(); throw new ServletException("处理请求时发生错误", e); } } } ``` #### 3. 检查 Servlet 容器 确保 Servlet 容器(如 Tomcat、Jetty 等)正常运行,并且版本与项目兼容。有时候,Servlet 容器的配置问题也可能导致 `ServletException` 异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值