Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的外部项目参考_Android - Fatal编程技术网

android中的外部项目参考

android中的外部项目参考,android,Android,我有一个android应用程序,它利用另一个项目作为项目参考。我已经进入了应用程序选项、构建路径,然后在项目引用中选择了项目 所有的构建和部署都很好,但是当我尝试运行应用程序并在该项目中实例化一个类时,我得到了一个java.lang.NoClassDefFoundError errrrrrr 我不是java项目专家,所以我认为我搞错了一些简单的事情。有什么想法吗?您可能需要在父项目旁边包含一个相关项目编译源的JAR。Android需要有类文件,这样才能将它们重新编译成Dalvik字节码,然后在类

我有一个android应用程序,它利用另一个项目作为项目参考。我已经进入了应用程序选项、构建路径,然后在项目引用中选择了项目

所有的构建和部署都很好,但是当我尝试运行应用程序并在该项目中实例化一个类时,我得到了一个java.lang.NoClassDefFoundError errrrrrr


我不是java项目专家,所以我认为我搞错了一些简单的事情。有什么想法吗?

您可能需要在父项目旁边包含一个相关项目编译源的JAR。Android需要有类文件,这样才能将它们重新编译成Dalvik字节码,然后在类路径上使用它们


可能会帮助你,从。

我也有类似的问题。我有一个老项目,我用它作为一些数学和3D函数的名称空间——我想在android和我的其他java代码之间分享这个项目。问题是,只要我从我的库中实例化一个豆荚类型,这个该死的东西就会崩溃。我的外部项目不生成jar文件;它仅用作名称空间。
我认为是运行时链接问题导致了这一问题,但android、eclipse和java总体上没有给我任何帮助。

这个问题有一些解决方法。您可以将您的库作为Android库进行检查: 右键单击project/properties/Android选项卡-“is库”

然后在你的主要项目中: 右键单击project/properties/Android选项卡->添加(并添加您的库项目)

但是,必须首先将您的库创建为EclipseAndroid项目(以便在项目属性中提供“Android”部分)


我已经这样做了,我不再有NoClassDefFoundError了。尽管如此,这种解决方案还是有利于早期开发。如果您的库是稳定的,您应该创建一个jar并将其包含在主项目中(并删除对Android库的引用)。

如果您的外部项目依赖于其类路径中的其他jar,请确保它们已导出,并将它们推到Eclipse中导出列表的顶部。我在项目中的一个类上抛出了相同的NoClassDef错误,但真正的问题是它所依赖的JAR的导出顺序。在我解决了这个问题后,工作正常。

在Eclipse上,转到“Android项目”->Properties->Java Build Path->Order and Expert,然后选择要导入的Java项目,并将其移动到所有条目的顶部。

我最近遇到了一个非常类似的问题,可能也是同样的问题。Android不喜欢引用项目,如果您试图让您的Android项目引用其他项目,则会抛出这些反射异常

它也不喜欢在构建路径上使用JAR,您需要做的是导出希望包含在android项目中的项目,并将它们放在/libs文件夹中。此文件夹通常在创建项目时创建,如果不只是自己创建,它会放在项目的根目录中。如果他们在那里,Android会自动接收他们

同样非常重要的是,如果您的外部项目也依赖于其他项目,那么您也需要导出这些其他项目,并将JAR放在android项目的/libs文件夹中


截至2012年7月22日,android的最新版本就是这样。如果您使用的是旧版本的android,它可能不适用。

我也有同样的问题。很少的研究让我想到了图书馆项目,这篇文章也提到了这一点。但请注意:

“您还可以将Android项目指定为库项目,这样可以与依赖它的其他项目共享。一旦将Android项目指定为库项目,它就不能安装到设备上。”

您可以找到更多信息:

而且


上下文:开发一个JSP网站,该网站可通过web与多个Android设备交互。需要公共类

采取的步骤:

对于包含公共类的java项目:

1) (什么也不做)

对于您的Android应用程序项目:

1) 项目属性->Java构建路径->项目选项卡->添加

2) 项目属性->项目引用->相应设置复选框

3) [正如Matthew在上面所说(这正是我所需要的)]“Android项目”->Properties->Java构建路径->Order and Expert,然后选择要导入的Java项目并将其移动到所有条目的顶部

对于JSP网站项目:

1) 项目属性->Java构建路径->项目选项卡->添加


2) 项目属性->项目引用->相应地设置复选框

经过进一步的调查,我相信我必须在项目选项的android选项卡下将引用的项目标记为“Is Library”,但每次单击它,它都不会持续。如果我再次打开选项,它将取消选中。好的,我签出了整个树(TFS+eclipse似乎有点棘手),最后得到了要保留的Is库,但仍然得到NoClassDefFoundError:(添加.jar文件的问题是,当引用的项目发生更改时,它不会自动更新。引用的项目正在进行开发,每次我进行更改时都必须将其导出到jar文件中,这将是一种可怕的痛苦。我认为这是引用该项目的全部意义,而不是jar.visual studio可以轻松地处理这个问题。然后在您的工作流程中引入一个适当的构建系统,该系统支持依赖项解析,例如Maven,这样在您每次构建时都会更新包含的jar。我已经设法让我的代码正常工作,在现有项目之间共享代码。Android显然不喜欢引用其他项目外部ect,但如果您访问项目属性并链接库的源代码,它可以执行任何内部gubbins操作,以使代码正常工作。-->properties->Java Build