问题的第一部分是,当我尝试添加第三方JAR时(库)到我的Android项目中,我首先遇到以下问题:解析XML时出错:未绑定前缀
,因为我正在尝试使用该JAR中的类(并且需要以某种方式定义前缀)。
其次,(解决了这个问题-下面给出了答案),我的应用程序无法在Android上运行,并且通过调试器(LogCat)发现我所在的类尝试消费不存在。
由以下原因引起:
java.lang.ClassNotFoundException:
com.github.droidfu.widgets.WebImageView ...
为什么,当我在Eclipse中没有编译或链接器错误时,在模拟器上是否会出现此问题?
这两个问题都是我的反问。我将在下面自己回答。该论坛上的其他帖子逐渐解决了这个问题,并且在其他地方也进行了讨论,但是我认为我可以为下一个家伙的到来提供更明确的帮助。
#1 楼
现在是因为缺少类问题。我是Eclipse Java EE开发人员,多年来一直习惯通过“构建路径”中的“用户库”机制添加第三方库。当然,至少有3种方法可以添加第三方库,以我的拙见,我使用的是最优雅的库。
对于Android来说,这是行不通的。 Dalvik“ JVM”无法处理普通的Java编译类,但必须将其转换为特殊格式。当您以我不想这样做的方式添加库时,不会发生这种情况。
相反,请按照(广泛使用的)说明导入第三方库,然后使用Build进行添加路径(使Eclipse出于编译目的而知道它)。这是分步操作:
将库下载到主机
开发系统。
在
中创建一个新文件夹libs。您的Eclipse / Android项目。
右键单击库,然后选择
导入->常规->文件系统,
然后在文件系统中浏览
以找到库的父级
目录(即您将其下载到的位置)。
单击“确定”,然后单击
左窗格中的
目录名(而不是复选框),然后检查右窗格中的
相关JAR。
(实际上)将库放入您的项目中。
右键单击您的项目,
选择“构建路径->配置构建
路径”,然后单击“库”选项卡,
,然后添加JAR ...,在libs目录中导航至您的
新JAR并
添加它。 (顺便说一下,这是转换您的新JAR以便在Android上使用的时刻。)
注意
如果lib已经存在,则可能不需要步骤5包含在您的构建路径中。只需确保首先存在它,然后再添加它即可。
您在这里所做的事情可以完成两件事:
包括Dalvik转换的JAR
在您的Android项目中。
使Java定义可用
Eclipse以便在开发(即编译)项目的源代码时找到第三方类。
#2 楼
确保您的第3方jar放在项目的“ libs”文件夹中,并且在打包应用程序时将它们放在.apk中。如果不支持jar中的某些内容,则可能会在设备上看到运行时错误,但除此之外,我在此方面取得了很大的成功。评论
关于经验的一切,我之前也遇到过同样的问题:)
– Paul Gregoire
10-9-4 '16:27
主席先生,谢谢您,但是很高兴看到libs文件夹需要我们在Maven存储库中或某个地方已经拥有的外部Jar文件的副本。
– asss
2013年3月27日19:40在
遗憾的是,它不再自动运行,您还必须告诉eclipse将库包含在软件包文件中。
–尼尔·汤森(Neil Townsend)
13年8月27日在14:02
何时更改?这是对我们所有人习惯的巨大改变。
– Paul Gregoire
13年8月27日在14:37
#3 楼
设置库项目库项目是标准的Android项目,因此您可以像创建新应用程序项目一样创建新项目。
您正在创建库项目,可以选择任何应用程序名称,程序包,并根据需要设置其他字段,如图1所示。
接下来,设置项目的属性以表明它是一个库项目:
在Package Explorer中,右键单击库项目并选择Properties。
在Properties窗口中,选择左侧的“ Android”属性组,然后在右侧找到Library属性。 。
选中“是库”复选框,然后单击“应用”。
单击“确定”关闭“属性”窗口。
新项目现在被标记为库项目。您可以开始将源代码和资源移入其中,如以下各节所述。
#4 楼
如果您使用的是ADT 22版,则需要在项目构建路径的order&Export选项卡中检查android依赖项和android私有库。#5 楼
首先,缺少前缀的问题。如果您在布局文件中使用了来自第三方的内容,则可能还需要使用其前缀,例如“ droidfu:”在下面的XML构造中的几个地方:
<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
android:layout_width="75dip"
android:layout_height="75dip"
android:background="#CCC"
droidfu:autoLoad="true"
droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
droidfu:progressDrawable="..."
/>
这是从JAR出来的,但是您还需要添加新的“ xmlns:droidfu”
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:droidfu="http://github.com/droidfu/schema"
...>
,否则会出现未绑定前缀错误。对我来说,这是从第三方库页面复制并粘贴所有提供的示例的失败。
#6 楼
分析XML时出错:未绑定前缀
资源'/ playteddy / res'不存在。
我遇到了以上两个错误,终于解决了。
对单击您的项目->属性-> Java构建路径-> googleadmobadsdk(选择并放在顶部),然后运行并解决问题。解决了我的运行时错误。
#7 楼
将源放在工作区外部的文件夹中。在项目浏览器中右键单击,然后选择“导入...”。
将项目作为Android项目导入工作区中。 />尝试构建它,并确保将其标记为库项目。
还要确保它是使用Google API支持构建的,如果没有,则会出现编译错误。
然后,在项目浏览器中的主项目上单击鼠标右键。
选择属性,然后在左侧选择Android。
在下面的库部分中,单击“添加”。.
现在应该可以使用mapview-balloons库将其添加到您的项目中。.
评论
拉斯,您可能应该再提出一个单独的问题。坐在这里,这个“答案”看起来有点奇怪。
– Paul Gregoire
10-9-4 '16:29
因此,我稍微重写了部分问题。我抵制了做简单事情的诱惑(您在这里提出的建议),因为我真的认为,这两个问题都源于尝试添加第三方库,并且我敢打赌,遇到第二个问题的任何人都可能会遇到这种麻烦。也是第一个。谢谢。
–罗斯·贝特曼
2010-09-04 17:24
我希望在正式的Android文档中对此有更明确的描述(尚未发现),并且在其他论坛中可以找到其他答案,但永远不要盲目地指出问题所在。请注意,在BlackBerry上,同样的问题也是一个巨大的噩梦,没有人提供有关如何解决的可靠信息-不确定我该怎么办。
–罗斯·贝特曼
2010-09-04 17:26
@RussBateman大家好,我尝试了您上面提到的步骤,并成功地将库jar包含在我的android项目中,因此在编译时我的项目可以访问这些库类。但是当我运行该项目时,出现了一个错误在我的控制台中:“转换为Dalvik格式失败,出现错误1” ..,并且我的项目无法启动!
– Zeba
2012年4月12日在7:53
在某些情况下,这是行不通的……我不记得我到底做了什么,删除了libs文件夹,读了它……现在做了你说的一切,添加了libs,导入了jar,添加了构建路径。 。编译器错误消失了,但是仍然得到运行时异常,即找不到该类:(
– Ixx
2012年6月2日在20:36