我正在尝试在Eclipse中设置一个Android库项目依赖的Android应用程序。我已经建立了一个名为AnTest的项目和一个名为AnLib的库项目。我在AnTest的项目属性中提供了对AnLib的引用。现在我试图从AnTest引用一些库代码(静态公共方法)。 Eclipse抛出“com.anlib.Hello无法解析为类型”。
并不是引用是悬空 - 我可以看到资源正确合并。但是从AnTest中,com.anlib包中唯一的类是“R”。
拜托,我做错了什么?必须缺少一些非常基本的步骤......
编辑:我已将AnLib添加到AnTest项目属性中的Java构建路径/项目中。现在它编译,但运行抛出NoClassDefFoundError异常......
答案 0 :(得分:5)
仔细查看示例项目(TicTacToe)之后,我注意到了类路径下的一些东西。它是库源的链接文件夹。应用程序的项目属性,Java构建路径,在“源”下单击“链接源”,提供库\ src的路径。
毕竟没有魔法。
编辑:默认情况下也不会选择NDK(基于JNI的本机)库。必须为库项目中的各个库建立一个名为“libs”的链接文件夹。
EDIT2:本机库的行为似乎取决于ADT和/或Eclipse的版本。资产也没有合并,但实际记录了后一部分。
EDIT3:根据最新的Android工具,库不再作为链接源实现。请忽略这个答案;它当时是真实和相关的,但现在不是。
答案 1 :(得分:0)
我有这个设置,但“库”项目中没有资源。我的主要项目是Android项目,但“库”只是一个标准的Java项目。这似乎运作良好。
在主Android项目的构建路径(“Projects”选项卡)下,我添加了库项目。
库项目的.project文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DataExchange</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures>
</projectDescription>
Android项目的.project文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
我不记得在设置它时做了一些特别的事情。