2013-05-17 24 views
1

我應該在我的android項目中使用natty-master。但我無法導入它。我如何使用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. 你必須創建你的 項目的根級別(旁邊的srcres等)命名libs文件夾。
  2. 複製第三方罐子到libs。項目
  3. 右擊並執行刷新,ADT會發現庫,將其添加爲Android的依賴。

現在的庫。 Maven的上市natty-07.jar所有相關性:

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 MB,你必須複製到libs依賴。
我不認爲所有的人都在運行時必需的,但我沒有辦法知道哪些是關鍵。
使用ProGuard可能會減少其中一些,但那是另一回事。

我創建快速「N髒應用與的minSdkVersion = 「8」 和targetSdkVersion = 「17」。然後將您提供的示例代碼放入「活動」中,並針對輸入運行它:"the day before next thursday"。因此,我得到了與日期[Wed May 22 16:52:49 GMT 2013]單組,這是因爲OK今天週五5月17


編輯2013年6月2日
必不可少代碼:
http://pastebin.com/XrF5k10M
完整的解決方案:
https://www.dropbox.com/sh/qk2cs51twrpobuz/YaFZWiG5jP/StackOverflow/16610375/NattyApp.zip

+0

尼斯的答案。本週末我也遇到過類似的問題,因爲我在外部使用natty-0.8進行實驗。我在運行時需要的兩個依賴項是'antlr-runtime-3.2.jar'和'ical4j-1.0.2.jar'。 Natty是迄今爲止我嘗試過的一個不錯的圖書館。 – Core

+0

我再次遇到問題。我寫了這個代碼,它在java項目中正常工作。但是當我在Android設備上嘗試它時,我在運行開始時將錯誤視爲「它已停止」。可能是什麼原因? – ebruszl

+0

這是一般錯誤消息。任何事情都可能是原因。嘗試使用您的工具:閱讀logcat,檢查Eclipse的控制檯視圖,在代碼中放入一些斷點,然後以調試模式運行您的應用程序。如果不提供異常堆棧跟蹤等最低限度的輸入,任何人都無法幫助您。我會通過鏈接擴展我的答案以完成解決方案,我希望你會發現它們有用。 –