在android活动中实现方法时的java.lang.Exception

时间:2016-10-12 16:27:56

标签: java android

这可能是一个非常天真的问题,但我无法解决这个java.lang.Exception错误。我也刚开始学习java和android所以......这可能是一个容易解决的问题。

所以我在android中有一个主要的活动,我想在app中实现一个weka ml分类器。现在我只是想加载一些数据。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ml_classifiers ml_object = new ml_classifiers();
    int number = ml_object.loadData();

尝试加载数据......

public class ml_classifiers {
public int loadData() {
    ConverterUtils.DataSource source = new ConverterUtils.DataSource("C:/Users/Seth/Desktop/iris.arff");
    Instances data = source.getDataSet();
    int num = data.numInstances();
    return num;
    }
}

为什么会出现java.lang.exception?

1 个答案:

答案 0 :(得分:1)

  

为什么会出现java.lang.exception?

将来遇到崩溃时,use LogCat to examine the Java stack trace associated with the crash。如果您不理解堆栈跟踪或无法识别问题,并且您需要帮助,请将堆栈跟踪与代码一起发布。就目前而言,我们必须准确猜出您的应用中出现了什么问题。

在这种情况下,当你可能在其他地方崩溃时,你肯定会崩溃:

ConverterUtils.DataSource source = new ConverterUtils.DataSource("C:/Users/Seth/Desktop/iris.arff");

假设这是Android应用中的代码。

您正在尝试从C:/Users/Seth/Desktop/iris.arff读取数据。这是Windows机器上文件的路径。 Android不是Windows。有大约20亿台Android设备正在使用中,而且它们都无法访问Windows机器桌面上的文件。

您需要将此数据放到Android设备上,例如:

  • 将其放入模块中的assets/目录(将其与您的应用打包),然后使用AssetManager获取该资产的InputStream,希望通过直接到ConverterUtils.DataSource

  • 从互联网下载文件,可能是internal storage(例如getCacheDir()

  • 希望用户手动将文件复制到设备上,例如通过external storage