2013-05-05 51 views
1

我對Android開發非常陌生(雖然有一些使用Cocoa Touch的Obj-C體驗)。我在測試我的第一個Android應用程序,因爲我遇到的這些語法錯誤:R.java:令牌上的語法錯誤

語法令牌「100000」的錯誤,無效VariableDeclaratorId

令牌「11」,刪除此令牌

語法

語法錯誤令牌錯誤「2」,刪除令牌「5000」這個令牌

語法錯誤,無效VariableDeclaratorId

令牌「61」

語法錯誤,無效VariableDecla令牌「69」 ratorId

語法錯誤,無效VariableDeclaratorId

當我雙擊它們,它們似乎是文件R.java中,我不知道他們是如何造成的。

public static final class drawable { 
     public static final int 100000=0x7f020000; 
     public static final int 11ba=0x7f020001; 
     public static final int 2values=0x7f020002; 
     public static final int 5000=0x7f020003; 
     public static final int 61=0x7f020004; 
     public static final int 69=0x7f020005; 
    ..... 

如果有人能說出這是如何引起的,那將是很棒的。

[更新]

MarsAtomic認爲它不遵循Android的資源的命名約定,也許有一個名爲rawables造成「5000」,「69」,這是作爲事實上,真正在這個案例。

更改名稱後,這些例外不再發生。

但我仍然想知道爲什麼在數字名稱中的圖像會引發這種情況。謝謝。

回答

4

我的評論莫名其妙地消失了,但是......每一種語言都有命名約定。約定通常基於一些半任意啓發式,因爲你必須有規則(例如,它更清楚地表明'a1'表示變量名,而名爲'1'的變量可能會被混淆爲一個值)。

你可以接受這個答案作爲規範的答案或不是 - 個人而言,我並沒有打擾誰得到什麼信用。

2

您不能聲明以數字開頭的變量名稱。

+0

很明顯,OP *沒有*寫出引用的代碼。它是由OP *創建的東西*自動生成的,並且他/她不知道其他東西是什麼。 (我也沒有做Android開發。) – 2013-05-05 09:45:23

3

更改名稱後,此異常不再發生。

但我仍然想知道爲什麼會發生這種情況。

由於這些資源的名稱用作字段名稱在自動生成的Java源文件(R.java),他們是不是有效的Java字段名。 Java字段名稱必須以字母開頭。字段名稱允許的詳細信息here in the JLS

(真的,MarsAtomic應該得到這個信用,但似乎並沒有見過轉貼問題。)

+0

非常感謝。這非常有幫助! – 2013-05-05 09:49:13

0

R.類是自動生成的,如果你改變它的內容,它將無法正常工作。

你要清理並建立你的項目。

0

如果你在

public static final class drawable { 

最常見的錯誤的錯誤是一個名爲.png文件在您的res文件夾開始與一些。

例如1_pic.png,2015_22_22pic.png等等。

正確方法:pic_1.png

-2

看看在RES目錄。你可能有一個上面提到的數字序列的文件,例如00000002.要解決這個問題,只需從文件夾中刪除它。

0

在位於\ res \內的所有文件夾中,找到名稱與其他名稱不同的文件,如00000002.如果發現,請將其刪除。然後在eclipse中點擊你的項目名稱,然後按F5鍵刷新它。因此,錯誤將消失,您的R文件將被更新。

相關問題