2014年4月23日 星期三

[Android]conversion to dalvik format failed with error 1 解決

這幾天發生這個錯誤,紀錄一下,供日後參考

“Conversion to Dalvik format failed with error 1” on external JAR

Go to Project » Properties » Java Build Path » Libraries and remove all except the "Android X.Y" (in my case Android 1.5). click OK. Go to Project » Clean » Clean projects selected below » select your project and click OK. That should work.

It is also possible that you have a JAR file located somewhere in your project folders (I had copied the Admob JAR file into my src folder) and THEN added it as a Java Path Library. It does not show up under the Package Explorer, so you don't notice it, but it does get counted twice, causing the dreaded Dalvik error 1.

Another possible reason could be package name conflicts. Suppose you have a package com.abc.xyz and a class named A.java inside this package, and another library project (which is added to the dependency of this project) which contains the same com.abc.xyz.A.java, then you will be getting the exact same error. This means, you have multiple references to the same file A.java and can't properly build it.

In other ways this may be occurred if you accidentally or knowingly edit/ add any thing in the class path file manually .In certain cases we may add android.jar path manually to classpath file for generating java doc.On removing the that after javadoc generated code will works fine.Please check this too if any one still occurs.

share|improve this answer
edited Feb 25 at 11:00



另外參考:
https://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCwQFjAA&url=http%3A%2F%2Fasd20277.pixnet.net%2Fblog%2Fpost%2F46603518-%255Bandroid%255Dconversion-to-dalvik-format-failed-with-error-1-%25E8%25A7%25A3&ei=gE5XU_uUGImKkgXK7oC4CA&usg=AFQjCNGxSQwIbp1IDU5A0GLeLL5vVjyP4w&sig2=iNjSVU9JqZoxbFPFcfinuA

大概有三種處理方法

1.

Project-->clean

2.
在目錄中搜索".classpath"檔案

再將檔案裡面的  

改為



3.

如果一次加入多個jar library時有可能會有這個問題

Project -> Properties -> Java Build Path -> Libraries

除了Andorid之外的.jar檔都移除掉,再按下OK

Project -> Clean -> Clean all project -> OK



還有


Conversion to Dalvik format failed with error 1解决方法:

第一种情况包导入错误.点击工程-->build path-->libraries-->选中android1.x 或者android2.x ,点击remove。
然后再点击add library-->User Library -->next-->User Libraries-->new 你取一个名字 比如android2.1 点击OK,
选中android2.1-->add jars-->\android-sdk-windows\platforms\android-7\android.jar 点击打开,点击ok-->finish.

第二种情况签名时没有成功。签名:java -jar signapk.jar platform.x509.pem platform.pk8 e:huaworkspace\hua\bin\hua.apk e:huaworkspace\hua\bin\hua_signaed.apk ,

如果hua_signaed.apk签名失败,那么请到你的工作目录中将hua_signaed.apk delete掉。

第三种情况包冲突,请到工程目录下将相同的包删除,重新导入一个,这一点和第一种情况类似,不过这是针对其他包,不是android包 
下面是eoeAndroid社区给大家找的一些其他解决方法,大家可以参考下:

conversion to dalvik format failed with error 1的解决办法(一)
http://www.eoeandroid.com/thread-177887-1-1.html

conversion to dalvik format failed with error 1的解决办法(二)http://www.eoeandroid.com/thread-177931-1-1.html



常见错误集锦
1

作者:风雪~泪发布于 02月21日访问(134评论(0

这些错误有些的我自己的,有的是我看其他人发表的就把他们整理在一起了,大家如果有什么错误都可以提供以下,嘿嘿...
1、出现“The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files"的错误。
问题原因:系统找不到JDK的位置,或者没有设置JDK的位置。
解决方法:
1.) 在Package Explorer->Project -> properties -> Java Bulid Path
2.) 选择"Add library..."
3.) 选择"JRE System Library"后,按Next.
4.) 选workplace default JRE后按finish...
备注:JRE system Library的存放路经一般存放在: android_sdksplatformsandroid-9android.jar , 第一个目录是你在安装JRE是选择的路经,不同的计算机可能会不同。
2、出现“The import android cannot be resolved”的错误。
问题原因:系统找不到Android SDK的路经
解决方法:
在Package Explorer -> project -> Properties -> Android中的Project Build Target里面勾选相应的SDK即可解决。
3、出现: Android requires compiler compliance level 5.0 or 6.0. Found '1.5' instead. Please fix project properties
问题原因:项目工程中的某些文件没有修改过来。
解决方法:
project ->android tools ->Fix Project
4、出现: conversion to dalvik format failed with error 1
在网上找到下面的解决方法:
android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
(1). 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。
(该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)
(2). 如果修改android sdk版本,则需要以下几个步骤:
1)修改SDK
选择工程,build path --> configure build path ---> library 删除引用的低版本SDK,
然后add External JARs,选择高版本SDK,OK,保存
2)修改classpath文件
该文件可能存在该项:
注意:classpath文件没有被加载到Eclipse的项目工程中去,它存放路经是在该项目的根目录里面的,你需要到硬盘上找到该文件用记事本打开后进行修改。
3) 修改AndroidManifest.xml
在AndroidManifest.xml文件中,application标签后添加
4) 修改default.properties(很重要)
该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。
再看看你的工程和新建的android 2.2的工程结构就一样了。
但是在我这里问题还是没有解决,问题还是出在SDK的版本不符的问题上,我又使用了第二种方法,删除了无关的SDK库即可解决问题。
5、出现: Unhandled exception type IOException,如下所示:
原因:未经处理的IOException异常类型
解决方法是:回避或捕获这个异常就OK了。修改如下:
[java] view plaincopy
try{
txt.setText(getRawString().toString());
}
catch(Exception e){
e.printStackTrace();
}
6、Invalid project description
网上的解决方法是:在项目根目录下的.project文件中,找到cms6.0 将cms6.0改为和项目目录名称一致。
解决方法:我已经将该工程导入Eclipse,一个工程不能重复导入两次;或者把你的文件夹考的别的目录下然后重新导入即可。
原因:有两份相同的AndroidManifest.xml的描述性文件。
7、java.lang.SecurityException: Requires VIBRATE permission
解决方法:在AndroidManifest.xml中加上一句
“”
原因:权限问题导致,因为使用了震动功能。
8、Activity not started, its current task has been brought to the front
解决方法:在Eclipse中,“project”-->“clean…”
原因:模拟器中还有东西在运行,也就是你要运行的activity已经有一个在模拟器中运行了不要以为你的模拟器退出到桌面了就没有东西在跑了。在你调试的时候异常关闭的程序有可能就有activity在运行。
9、ArrayAdapter requires the resource ID to be a TextView
问题描述:java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView而
adapt = new ArrayAdapter (this, R.layout.main, infoList);
这句中布局main中的布局可能不是TextView对象。
adapt = new ArrayAdapter (A1, A2, A3);
参数A2是一个“resource ID to be a TextView
解决方法:A2改为:android.R.layout.simple_spinner_dropdown_item
10、R.java文件突然不见了
解决方法:右键项目-->Build Project
原因:res/drawable下的文件名只能是在a~z、0~9之间字符组成。
10、ScrollView can host only one direct child。
解决方法:需要把所有的子元素放到一个LinearLayout内部或RelativeLayout等其他布局方式。
原因:主要是ScrollView内部只能有一个子元素,即不能并列两个子元素。
11、emulator: ERROR: the user data image is used by another emulator. aborting
没有正常关闭导致的,删除android-sdk-windows.androidavd对于版本下的以.lock结尾的文件夹就行。
原因:.lock是加锁,如果程序崩溃等原因导致无法清除这些以.lock结尾的文件夹,就会出现这个问题,也就是这个avd的锁没有被释放,导致avd manager以为这个avd正在使用当中。
12、* daemon not running. starting it now *
ADB server didn't ACK
* failed to start daemon *
已经确认adb.exe的路径没有问题,重启了两次模拟器和eclipse还是不行,上网查了下资料~
解决办法:
(1)查看任务管理器,关闭所有adb.exe;(2)重启eclipse即可
13、android.content.res.resources notfoundexception
在Manifest.xml中加上:,或者将5改成6,其他值也一样加1
14、Unable to instantiate activity ComponentInfo
解决方案:更改activity android:name="Acitivity"为activity android:name=".Acitivity"
原因:AndroidManifest.xml配置activity的路径时出错了
15、工程名上有红色感叹号
解决方案:右键项目名称BuildPath--->ConfigureBuildPaht...中,然后上面有几个选项卡找到Libraries中出现红色叉号的包为路径错误的包。到classpath中修改相应包的当前路径。然后回到eclipse中F5刷新工程。
问题原因:工程中classpath中指向的包路径错误。
解释:用myeclipse新建web工程,在工程目录下会生成一个.classpath配置文件,里面是你工程里面引用的jar的配置。这个.classpath对你的web工程没有什么影响,其实是给myeclipse识别的。你说的这种情况是因为.classpath文件里面配置引用了某个jar,但是实际上你的lib里面并没有这个jar所以才会有红色的提示。你不用拿.classpath文件和你的jar一个个去找,你现在打开MyEclipse右键单击你的web工程,找到BuildPath-->ConfigureBuildPaht...-->然后上面有几个选项卡找到Libraries。这里看到的就是你工程里面引用的所有的jar,看看是不是在某个jar图标上有个很小的黄色的感叹号?如果有的话就没错了,先选中这个jar,点击右边的Remove-->点击OK等待几秒,现在web工程上面的红色XX是不是没有了,哈哈。解释一下:黄色的感叹号的jar,表示.classpath配置文件引用了jar,但是实际上lib里面没有这个jar。
16、使用Intent时出现另一个活动未发现的异常(ActivityNotFoundException)
解决方案:在AndroidManifest.xml中再加一个
17、Fail to connect to camera service
在AndroidManifest.xml中添加
如果还是不行
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
mCamera.stopPreview();
mCamera.release();//加上这句,就OK!
mCamera=null;
}
18、android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
解决方法:将new AlertDialog.Builder(Context context)中的参数用Activity.this(Activity是你的Activity的名称)来填充就可以正确的创建一个Dialog了。
导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。
19、java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
在任务管理器中终止adb服务,关闭手机调试或者模拟器,重启就好了。
http://hi.baidu.com/o%B0%D7%C9%AB%B5%C4%D4%C6/blog/item/024c3c6bfb6440c180cb4a3d.html
20、java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
两个表示位置的属性不能同时使用,但是有些一起用又没有报异常,不太了解。
如android:layout_alignParentTop="true" android:layout_centerHorizontal="true"
21、No resource found that matches the given name
在相对布局中,若是用到android:layout_above属性,并且其后id之前没有出现过,那么需要这样写:android:layout_above="@+id/vidAdd_ButtonGroup",多加一个“+”。
22、@Override错误
Window->Preferences->Java->Compiler.
把Compiler compliance level的级别改成1.6,每个工程属性里只要默认设置就行了,不要设置specific.
23、PANIC: Could not open: C:UsersLanyan.android/avd/SDK2.2.ini
添加android_sdk_home系统变量,其值为想要保存avd的目录,例如我放在D:Program Filesandroidavd下。
24、Activity has leaked window that was originally added
原因1:重写onKeyDown时,return super. onKeyDown(int keyCode, KeyEvent event)没有修改;
原因2:关闭Activity时,没有关闭AlertDialog造成的。
法一:将return super. onKeyDown(int keyCode, KeyEvent event)改为return false;
法二:@Override
protected void onPause()
{
super.onPause();
//关闭对话框
AlertDialog.dismiss();
}
法三:AndroidManifest.xml中,在相应的节点中添加
android:configChanges="orientation|keyboardHidden|navigation"
25、unable to instantiate application
解决方法1:在AndroidManifest.xml中的application里的android:name要去掉;
解决方法2:全局类或者变量私有;
解决方法3:package路径错误。
26、IllegalArgumentException 'Provider "gps" unknown"
locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);触发不了LocationManager
加入以下一段参数就好了:
mLocationManager.addTestProvider(LocationManager.GPS_PROVIDER,
"requiresNetwork" == "", "requiresSatellite" == "", "requiresCell" == "", "hasMonetaryCost" == "",
"supportsAltitude" == "", "supportsSpeed" == "",
"supportsBearing" == "", android.location.Criteria.POWER_LOW,
android.location.Criteria.ACCURACY_FINE);
27、Unable to resolve target 'android-2'
安装低版本的api,再default.properties 这个文件中把target=android-2 改成 target=android-7终于就没有问题了。
28、Invalid start tag LinearLayout
main.xml放错文件夹了,应该在reslayout下。
29、INSTALL_FAILED_INSUFFICIENT_STORAGE
原因:SD卡内存容量不够
法一:在下图的“Additional Emulator Command Line Options”中加上“-partition-size 128”
法二:启动模拟器,然后进入菜单
settings->applications->mange applications-> select the application->select "unistall".
这样就能彻底删除了,然后再重新安装这个apk就没问题了
30、No Space left on device
清除C:UsersLanyanAppDataLocalTempAndroidEmulator文件夹下的tmp文件
参考资料:http://hi.baidu.com/boderboder/blog/item/af2a81de31dc3f235982ddd8.html
31、Could not open the editor: Resource is out of sync with the file system
当右击default.properties打开时,出现下图错误:
解决方法:右击工程,Refresh一下就好了。
原因:Usually happens when some files are edited outside of eclipse。
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: 风雪~泪