Recent Posts
Archives

Posts Tagged ‘Java’

PostHeaderIcon HashMap.put(null, toto)

Question: does Java’s HashMap accept null as a key?
Read the rest of this entry »

PostHeaderIcon List the content of a jar

Case: you have a jar foo.jar, and you need list the names of the files in it.

Solution: use the following command:
jar -tf foo.jar

PostHeaderIcon Display the list of certificates trusted by Java

Case: under Windows, you need the list of the certificates that your local Java installation trusts.
Solution: open a DOS console, and write:
C:\>keytool -list [-v] -keystore "C:\Program Files\j2sdk1.4.2_07\jre\lib\security\cacerts"

PostHeaderIcon java.util.ConcurrentModificationException

Probleme rencontre ce matin en Java 5 (Tiger):

[java]
Vector toto = new Vector();
// ...remplissage du vecteur...
for (Object o : toto){
toto.remove(o);
}

Cela leve une exception de type:
java.util.ConcurrentModificationException

Au debut j’ai pense a un probleme de synchronisation, et donc j’ai ajoute un bloc synchronized(mutex){...}, mais cela n’a pas fonctionne.
Mais en fait le probleme est different: apparemment cela vient de la facon dont le “foreach” a la Java gere le parcours des elements d’un vecteur (ou de tout autre objet iterable).

La solution que j’ai trouvee consiste a utiliser un “for” classique, qui fonctionne:

[java]
for (int i=0; i<toto.size(); i++){
Object o = toto.elementAt(i);
remove(o);
}

(je n’ai meme pas tente un remove(i), pour eviter les effets de bord sur les indices)
Neanmoins ce n’est pas ce qu’il y a de mieux, il aurait fallu utiliser un vrai Iterator, mais pour etre franc j’avais legerement la flemme…