2011-08-23 13 views
7

Quando provoPerché non riesco ad usare StringUtils.join di Apache su un elenco?

StringUtils.join(myList,','); 

ottengo un fallimento compilazione:

cannot find symbol 
symbol : method join(java.util.List,char) 

Ma le seguenti opere:

StringUtils.join(myList.toArray(),','); 

La docs (Apache Commons Lang 2.5) sembrano indicare che entrambi dovrebbero funzionare, in quanto registrazione entrambi:

public static String join(Collection collection, 
         char separator) 

e

public static String join(Object[] array, 
         char separator) 

Tutte le idee? Per la cronaca, sto importando import org.apache.commons.lang.StringUtils;

+3

Disponibile dalla versione 2.3. Hai un file JAR obsoleto? – home

+0

E 'MyList' è definito come? –

+0

In realtà ho lo stesso problema ma ho controllato tutto e le mie versioni 2.6 – Kevin

risposta

12

Il motivo più probabile è che si sta utilizzando una versione precedente di Commons Lang, poiché il metodo che utilizza uno Collection è stato aggiunto solo in 2.3.

È possibile verificarlo guardando nel file MANIFEST.MF nel barattolo nel campo Implementation-Version.

2

Ho avuto il problema prima e ho capito che è dovuto all'ordine della mia importazione.

Una volta spostato il mio ordine JAR nell'ordine di importazione, funziona.

Spero che questo aiuti.

+0

questo effettivamente aiuta ... grazie mille – user2720864

0

Non è proprio il tuo problema, ma correlato:

In org.apache.commons.lang.StringUtils, esiste un metodo

join(Object[]) 

che non prende un delimitatore.

join(Object[], char) 
join(Collection, char) 

Tutti prendono delimitatori (può utilizzare String instesad di char). Quindi se dimentichi il delimitatore, il tuo messaggio di errore potrebbe indicare il problema sbagliato.