2013-05-17 2 views
1

Я должен использовать natty-master в моем проекте Android. Но я не мог его импортировать. Как я могу использовать natty без maven? Я нахожу эти коды, я добавил банки, но это не работает.Как я могу использовать natty-master?

import java.util.Date; 

import java.util.List; 

import java.util.Map; 

import com.joestelmach.natty.*; 

public class natty { 

public static void main(String[] args) { 

    Parser parser = new Parser(); 

    List<DateGroup> groups = parser.parse("the day before next thursday"); 
    for(DateGroup group:groups) { 
    Date dates = group.getDates().get(0);   
    int line = group.getLine(); 
    int column = group.getPosition(); 
    String matchingValue = group.getText(); 
    String syntaxTree = group.getSyntaxTree().toStringTree(); 
     Map parseMap = group.getParseLocations(); 
    boolean isRecurreing = group.isRecurring(); 
    Date recursUntil = group.getRecursUntil(); 
     } 
    } 

}

ответ

3

Я исследовал это для вас немного.
Я предполагаю, что вы используете Eclipse с текущей версией плагина ADT. Прежде всего, давайте убедитесь, что вы хотите добавить баночки правильно:

  1. Вы должны создать папку с именем libs на корневом уровне вашего проекта (наряду с src, res и т.д.).
  2. Скопируйте сторонние банки на libs.
  3. Щелкните правой кнопкой мыши по проекту и запустите Refresh, ADT откроет библиотеки и добавит их в зависимости от Android.

Теперь для библиотек. Все зависимости от natty-07.jar перечисленного Maven является:

antlr-2.7.7.jar 
antlr-runtime-3.2.jar 
backport-util-concurrent-3.1.jar 
commons-codec-1.5.jar 
commons-lang-2.6.jar 
commons-logging-1.1.1.jar 
ical4j-1.0.2.jar 
stringtemplate-3.2.jar 

Да, это 2,3 МБ зависимостей вы должны скопировать в libs.
Я не думаю, что все они необходимы во время работы, но я не могу сказать, какие из них имеют решающее значение.
Использование ProGuard, вероятно, могло бы уменьшить некоторые из них, но это уже другая история.

Я создал быстрое «грязное приложение с minSdkVersion =« 8 »и targetSdkVersion =« 17 ». Затем введите код примера, который вы указали в Activity, и запустите его для ввода: "the day before next thursday". В результате я получил одну группу с датой [Wed May 22 16:52:49 GMT 2013], который нормально, так как сегодня пятница 17 мая


Редактировать 2013-06-02
существенный код:
http://pastebin.com/XrF5k10M
полное решение:
https://www.dropbox.com/sh/qk2cs51twrpobuz/YaFZWiG5jP/StackOverflow/16610375/NattyApp.zip

+0

Хороший ответ. У меня была аналогичная проблема в эти выходные, когда я экспериментировал с natty-0.8 вне maven build. Единственными двумя зависимостями, которые мне нужны во время выполнения, были «antlr-runtime-3.2.jar» и «ical4j-1.0.2.jar». Natty - хорошая библиотека из того, что я пробовал до сих пор. – Core

+0

У меня проблема снова. Я написал эти коды, он корректно работает в java-проекте. Но когда я пытаюсь использовать его на устройстве Android, я принял ошибку, поскольку «она остановилась» в начале работы. В чем причина? – ebruszl

+0

Это общее сообщение об ошибке. Все может быть причиной. Попробуйте использовать свои инструменты: прочитайте logcat, проверьте представление консоли Eclipse, поместите некоторые контрольные точки в код и затем запустите приложение в режиме отладки. Без предоставления минимального ввода, такого как трассировка стека исключений, никто не сможет вам помочь. Я продолжу свой ответ со ссылками на полное решение, надеюсь, вы найдете их полезными. –

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