Android开发环境升级到ADT 22之后,可能会出现两点小问题:
1. 新建Android项目时,R.java不能自动生成,解决方法:
打开Android SDK Manager重新检查更新,看到“Android SDK Build-tools”这一项选中并下载。下载完成后,重新建项目即可恢复正常。参照下图

2.旧的项目重新运行时出现“java.lang.ClassNotFoundException”异常,解决方法:
在文件系统中找到项目下的.classpath文件,找到如下
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
改为
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
即可。如果有依赖的项目,请把依赖的所有项目也按以上方式修改。
经过如上步骤如果还不能正常运行,请检查项目中的Android Dependencies下是否有annotations.jar,如果有请修改项目根目录下project.properties文件中的target=最新Android版本,比如: target=android-17 然后刷新项目即可。
注:如果项目根目录下没有project.properties文件,请从别的新的项目中复制project.properties和proguard-project.txt两个文件过来,并删除项目根目录下的default.properties和proguard.cfg两个文件,然后对project.properties做相应修改。
希望对你有所帮助!
参考:
1.http://stackoverflow.com/questions/16584015/java-eclipse-no-more-r-file-ever/16584243#16584243
2.http://blog.youkuaiyun.com/rwecho/article/details/8934507
今天打开刚打开Eclipse,提示我library库有更新。二话没说,直接打开Android SDK Manager,更新了一遍所有能更新的,同时把ADT也升级到了22版本。
升级过程比较顺利,编译之前的代码,也没有什么问题,但是接下来就出问题了。
我把编译出来的APK在设备上运行,一运行就出来java.lang.ClassNotFoundException的错误,明明那个class是存在的。之前也遇到过类似的问题,但那个是升级ADT17的时候外部jar包包含不对引起的,这个不是同一个问题啊,但是从现象上来看应该是一样的。
既然错误的信息一样,那就从引用的地方入手。后来果然发现.classpath文件发生了变化。
之前的.classpath文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry kind="output" path="bin/classes"/>
- </classpath>
升级后重新编译且运行出现错误的.classpath文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
- <classpathentry kind="output" path="bin/classes"/>
- </classpath>
后来我新建了一个工程,发现.classpath文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
- <classpathentry kind="output" path="bin/classes"/>
- </classpath>
区别就在于将
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
修改后再次运行,OK,没问题了!
那如果项目组开发,例如svn控制代码,难道要求所有的开发人员的ADT完全统一吗?下面说讲解决办法:
需要将.classpath修改一下才能提交svn,只保留这些类似的信息就可以了.如下
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
其他信息,创建项目时,eclipse和ADT会自动补齐的,ADT22,ADT21,补的内容是不一样的。
同样,如果你要分享代码,.classpath也最好按照这个例子来改一下,否则别人还真的容易报错。
3846

被折叠的 条评论
为什么被折叠?



