这是关于将第三方库(JAR)添加到Eclipse中的Android项目的两部分问题。

问题的第一部分是,当我尝试添加第三方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以便在开发(即编译)项目的源代码时找到第三方类。


评论


拉斯,您可能应该再提出一个单独的问题。坐在这里,这个“答案”看起来有点奇怪。

– 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



#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库将其添加到您的项目中。.

#8 楼

转到Eclipse中的构建路径,然后单击“排序并导出”,然后检查库/ jar,然后单击“向上”按钮将其移动到列表的顶部以首先对其进行编译。