2016-10-12 3 views
-1

Это может быть очень наивный вопрос, но я не могу получить эту ошибку java.lang.Exception, чтобы уйти. Я также начал изучать java и android, поэтому ... это может быть легкой проблемой для решения.java.lang.Exception при реализации метода в активности android

Итак, у меня есть основное занятие в андроиде, и я хочу реализовать классификатор 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

'C:/Users/Seth/Desktop/iris.arff' на мобильном устройстве? – Blackbelt

+0

О, это не :(Я вижу, как это будет проблемой. В конце концов данные будут передаваться через bluetooth и попадать в базу данных, но на данный момент я просто пытался запустить некоторые типовые классификаторы. – Seth

ответ

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. Существует ~ 2 миллиарда устройств Android, и ни один из них не имеет доступа к файлам на рабочем столе вашего компьютера Windows.

Вы должны получить эти данные на Android устройства, такие как:

  • , поместив его в каталог assets/ в модуле (упаковать его с приложением), а затем с помощью AssetManager, чтобы получить InputStream на этот актив, мы надеемся, что прохождение непосредственно ConverterUtils.DataSource

  • загрузки файла из Интернета, возможно, в internal storage (например, getCacheDir())

  • ожидающие пользователя, чтобы скопировать файл на свое устройство вручную, например, с помощью external storage

Смежные вопросы