Strano errore in R.java, anche dopo la pulizia del progetto: “I caratteri di sottolineatura possono essere utilizzati solo con il livello di origine 1.7 o superiore”

Quindi tutto andava abbastanza bene, fino a poco fa quando R.java decise di avere questo errore dopo aver aggiunto un’icona ( 5_content_new.png , per essere precisi).

Ho provato a pulire il progetto e riavviare Eclipse, senza alcun risultato.

Il codice problema:

 public static final class drawable { public static final int 5_content_new=0x7f020000; public static final int ic_launcher=0x7f020001; ... } 

La linea rossa appare proprio sotto 5_ , e l’errore dice:

Underscores can only be used with source level 1.7 or greater

Qualcuno ha mai riscontrato un problema simile?

Questa è una combinazione di due cose:

  1. Gli identificatori Java non possono iniziare con una cifra. Il primo personaggio dovrebbe essere una lettera.

  2. In Java 7, hanno introdotto syntax alternative per i letterali interi; ad es. 1_000 è uguale a 1000 .

Quindi, quello che sta succedendo è che il compilatore sta analizzando 5_content_new come 5_ content_new … che è ragionevole se il livello sorgente era Java 7, e poi ti dice che non stai usando Java 7. Se stavi usando Java 7, quella compilazione l’errore sarebbe stato sostituito da un errore che diceva che un intero letterale ( 5_ ) non era legale in quel punto.

In breve, il codice contiene qualcosa di così “off the wall” che lo scrittore del compilatore non ha previsto nel codice di diagnostica del compilatore.


L’altro punto è che usando QUALSIASI underscore in una variabile, metodo, class o nome di pacchetto in Java è una violazione di stile . I caratteri di sottolineatura dovrebbero essere utilizzati solo nei nomi costanti di maiuscole come “MAX_VALUE”.

Ho appena provato a rinominare un drawable esistente in un mio progetto Android di compilazione, ed Eclipse ha lanciato questa finestra di dialogo:

Eclipse Error (Se non riesci a vedere l’immagine molto bene, la finestra di dialogo sta dicendo che il nome della risorsa deve iniziare con un carattere.

Il modo in cui ho prodotto questa finestra di dialogo è stata la ridenominazione di un file drawable. Il nome originale del drawable era button_blue_normal.9.png , rinominato in 5_button_blue_normal.9.png e premuto 5_button_blue_normal.9.png . La finestra di dialogo si apre immediatamente dopo aver premuto Invio.

Non lo sapevo mai, ma a quanto pare hai bisogno di un carattere di lettera, non di una cifra , proprio all’inizio del nome del file di un disegnabile.

So di essere in ritardo per la festa, ma mi sono imbattuto in questo da solo quando ho iniziato a lavorare con il componente ActionBar.

La risposta di ScootrNova mi ha portato alla soluzione. Il problema era il pacchetto di icone consigliato da Android che ho scaricato per l’utilizzo nelle esercitazioni. Tutti i nomi di file sono iniziati con numeri interi (1_xxx.png, ecc.). Ho rimosso quelli che non stavo usando, rinominato gli altri a qualcosa che iniziava con una lettera (ho usato “icon_xxx.png” come esempio), e compilato senza errori.

Ho avuto lo stesso problema e l’ho risolto dopo aver inserito cifre dopo testo non all’inizio. Avevo la linea 2_Activity e l’ho cambiata in Activity2 . Era la mia soluzione Spero che possa aiutare qualcuno.

Ho avuto lo stesso problema. Risoluzione: guarda i file res, i drawlables o all’interno di xml e rinomina i file o le stringhe che iniziano con (numero underscore string) 1_string a stringa_1.

Spero che questo aiuti a risolvere il problema.