我正在构建一个Android应用程序,我想在另一个Eclipse项目中使用一个包中的类(一个普通的Java,非Android,如果这很重要)。我右键单击Android项目,选择属性| Java构建路径|项目并检查我想要的课程。然后我添加一个导入语句,Eclipse似乎接受(即错误图标表示它不识别该类消失)。这是主要活动的代码:
package com.MeadowEast.tmptest;
import learn.Card; // the class I want
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t = (TextView) findViewById(R.id.textView2);
Card c = new Card("abc","def","ghi"); // using the class
t.setText(c.getHanzi());
}
}
使用与非Android Java项目完全相同的方法可以正常工作。但是,当我尝试在模拟器中运行上述内容时,它会死亡,错误为Could not find class 'learn.Card'
。
我有一个类似的问题,一次使用JAR文件,并了解到有两个必要的步骤(第二个是将jAR的副本放在libs文件夹中)。这里还需要第二步吗?或者其他事情是什么?
答案 0 :(得分:0)
有很多方法可以解决这个问题。
注意:选项3和4与选项2的轻量级版本非常相似。
另请注意,对于一个小项目,2可能是过度杀伤,可能会引入不必要的额外编译时间。
就个人而言,我更喜欢选项1用于库不经常更改的项目,而选项3/4用于库依赖的项目经常更改。
1的好处是当图书馆发生变化时你不会感到惊讶(api的变化, - 你必须努力更新到最新版本)。 3/4的好处是,如果您要更新库以使用该项目,您不必经常重新编译和导入jar。
答案 1 :(得分:0)
根据您使用的IDE,有不同的答案。
如果您正在使用Eclipse / ADT,您应该能够简单地将jar放入名为“libs”的顶级目录中。请务必将名称正确。
即使你这样做,Eclipse也可能需要“摇摇晃晃”才能让它注意到新文件。除非您看到包含您的库的“Android私有库”条目,否则它没有注意到。尝试重新构建,重新导入,刷新等等。 FEH。
如果您使用的是Intellij / Studio(以及Gradle),则需要在Gradle构建文件中添加一行,如下所示:
compile fileTree(dir: 'libs', include: ['*.jar'])
它位于dependencies
文件夹中build.gradle
文件的app
子句中。
这次jar文件本身进入目录app/libs
在你那样“摇摆”工作室之后。 “同步”,“清除缓存并重新启动”。所有常用的技巧。当您的库出现在“项目”窗格中的“外部库”选项卡下时,您知道您已成功
答案 2 :(得分:-1)
如果您使用源代码,请将它们放入您的项目中。
如果你使用jar,你应该放入libs文件夹。因为,当您在设备中运行应用时,所有
你的代码必须在你的apk(除了framework.jar),否则它找不到你的代码。如果你
把你的jar放在libs文件夹中,eclipse(恰好是apkbuilder)将它们打包成apk
文件。