OVH Cloud OVH Cloud

(IMB J2RE 1.5.0) ArrayList is not generic

14 réponses
Avatar
Une bévue
j'essaie, sur linux ppc, avec la version beta du Java 1.5 d'IBM, sur un
petit bout de code, pour test, à cette ligne :
ArrayList<JPanel> rows = new ArrayList<JPanel>();
éclipse me dit :
the type ArrayList is not generic ; it cannot be parametrized with arguments
<JPanel>.

je comprends bien le message MAIS, est-ce que cela signifie qu'IBM n'a pas
choisi de produire un java 1.5 compatible avec celui de Sun ?

ce qui me semble bizarre c'est que, ce test, j'en ai un jar compilé sur Java
1.5 Sun/apple (donc sur MacOS X) et il tourne sur ce linux ppc avec la vm
associée au jre ibm 1.5.

sur le site ibm où j'ai téléchargé ce sdk, je ne vois pas d'info à ce
sujet...

quelqu'un aurait des lumières ?

ma version java :
Java(TM) 2 Runtime Environment, Standard Edition (build pxp32dev-20051104)
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Linux ppc-32 j9vmxp3223-20051103
(JIT enabled)
J9VM - 20051027_03723_bHdSMR
JIT - 20051027_1437_r8
GC - 20051020_AA)
JCL - 20051102

--
Une bévue

10 réponses

1 2
Avatar
alexandre cartapanis
Une bévue wrote:
j'essaie, sur linux ppc, avec la version beta du Java 1.5 d'IBM, sur un
petit bout de code, pour test, à cette ligne :
ArrayList<JPanel> rows = new ArrayList<JPanel>();
éclipse me dit :
the type ArrayList is not generic ; it cannot be parametrized with argu ments
<JPanel>.

je comprends bien le message MAIS, est-ce que cela signifie qu'IBM n'a pas
choisi de produire un java 1.5 compatible avec celui de Sun ?


Il faut faire la difference entre JRE et JDK. Il est possible que les
classes compilées avec un sun jdk 1.5 tourne sur un ibm jre 1.5.


ce qui me semble bizarre c'est que, ce test, j'en ai un jar compilé sur Java
1.5 Sun/apple (donc sur MacOS X) et il tourne sur ce linux ppc avec la vm
associée au jre ibm 1.5.


Voila c'est ce que je disais.

sur le site ibm où j'ai téléchargé ce sdk, je ne vo is pas d'info à ce
sujet...

quelqu'un aurait des lumières ?

ma version java :
Java(TM) 2 Runtime Environment, Standard Edition (build pxp32dev-200511 04)
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Linux ppc-32 j9vmxp3223-200 51103
(JIT enabled)
J9VM - 20051027_03723_bHdSMR
JIT - 20051027_1437_r8
GC - 20051020_AA)
JCL - 20051102



En fait je crois que le "matching" des generics se fait a la
compilation, et non a l'execution. C'est pour cela que ton code peut
etre executé, mais que tu ne peux pas le compiler. Faut voir la
specification de la JVM 1.5 pour en etre sur...

Avatar
Une bévue
alexandre cartapanis wrote:

En fait je crois que le "matching" des generics se fait a la
compilation, et non a l'execution. C'est pour cela que ton code peut
etre executé, mais que tu ne peux pas le compiler. Faut voir la
specification de la JVM 1.5 pour en etre sur...


oui, merci, c'est plus clair pour moi, comme tout le monde n'était pas
d'accord avec les specs de 1.5/sun, il est possible que les generics ne
soient pas implémentés dans le compilo ibm, côté sun je suis à peu près sûr
que le matching est à la compilation, j'ai dû lire ça qqpart...

me reste à trouver les specs ibm versus sun ))

le pb est que je dois recompiler db40 sous ibm car je n'arrive pas à faire
qqc avec, au premier lancement j'ai eu droit à :

Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/db4o/Db4o (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:810)

c'est sur un forum db4o qu'on m'a conseillé de recompiler db4o sous ibm,
d'où mon petit essai ))

en tout cas merci, ça m'a fait progresser en "comprenotte"...
--
Une bévue

Avatar
alexandre cartapanis
Une bévue wrote:
alexandre cartapanis wrote:


En fait je crois que le "matching" des generics se fait a la
compilation, et non a l'execution. C'est pour cela que ton code peut
etre executé, mais que tu ne peux pas le compiler. Faut voir la
specification de la JVM 1.5 pour en etre sur...



oui, merci, c'est plus clair pour moi, comme tout le monde n'était pas
d'accord avec les specs de 1.5/sun, il est possible que les generics ne
soient pas implémentés dans le compilo ibm, côté su n je suis à peu près sûr
que le matching est à la compilation, j'ai dû lire ça qq part...

me reste à trouver les specs ibm versus sun ))

le pb est que je dois recompiler db40 sous ibm car je n'arrive pas à faire
qqc avec, au premier lancement j'ai eu droit à :

Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/db4o/Db4o (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:810)

c'est sur un forum db4o qu'on m'a conseillé de recompiler db4o sou s ibm,
d'où mon petit essai ))


Alors moi aussi j'ai eu ce probleme: j'ai voulu executer du code 1.5 sur
une JVM 1.4.2...

La solution que j'ai trouvé c'est d'utiliser l'option -target 1.4 de
javac. Si tu compiles avec ant, faut rajouter l'attribut target="1.4" a
la tache javac.

Donc essaye de compiler db4o sur ton systeme avec cette option, voire ce
que ca donne.

Et verifie bien que la jvm de l'IBM est une 1.5, en general cette erreur
indique que l'on utilise du code trop recent pour la JVM. Apres peut
etre que la JVM 1.5 de IBM ne respecte pas les spec 1.5, mais alors je
sais plus quoi te dire lol.

en tout cas merci, ça m'a fait progresser en "comprenotte"...



Avatar
Une bévue
alexandre cartapanis wrote:

Alors moi aussi j'ai eu ce probleme: j'ai voulu executer du code 1.5 sur
une JVM 1.4.2...

La solution que j'ai trouvé c'est d'utiliser l'option -target 1.4 de
javac. Si tu compiles avec ant, faut rajouter l'attribut target="1.4" a
la tache javac.

c'est juste, j'ai déjà eu ça, comme la 1.5 sur MacOS X s'est fait tirer

l'oreille...
--
Une bévue

Avatar
Olivier Thomann
me reste à trouver les specs ibm versus sun ))
Inutile. Si le JRE est 1.5. Les classes doivent contenir les génériques.


le pb est que je dois recompiler db40 sous ibm car je n'arrive pas à faire
qqc avec, au premier lancement j'ai eu droit à :

Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/db4o/Db4o (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:810)

c'est sur un forum db4o qu'on m'a conseillé de recompiler db4o sous ibm,
d'où mon petit essai ))
Visiblement tu essayes de faire tourner du code compilé avec un compilo

1.5 sur une VM 1.4.
Si tu veux compiler tu codes 1.5, alors oui il te faut un JDK 1.5 pour
compiler et un JRE 1.5 pour l'exécuter.
Si tu compiles du code 1.4, un bon conseil: contentes-toi d'utiliser un
JDK et un JRE 1.4. Tu peux en effet utiliser -target 1.4 avec un compilo
1.5, cela n'empêchera pas par exemple l'utilisation de méthodes
définies uniquement en 1.5 ce qui provoquera des erreurs lors de
l'exécution sur une VM 1.4.
--
Olivier

Avatar
Olivier Thomann
j'essaie, sur linux ppc, avec la version beta du Java 1.5 d'IBM, sur un
petit bout de code, pour test, à cette ligne :
ArrayList<JPanel> rows = new ArrayList<JPanel>();
éclipse me dit :
the type ArrayList is not generic ; it cannot be parametrized with arguments
<JPanel>.
Pourrais-tu donner plus de détails sur le compilo utilisé?

--
Olivier

Avatar
Une bévue
Le Sun, 11 Dec 2005 17:01:56 -0500, Olivier Thomann a écrit :

Pourrais-tu donner plus de détails sur le compilo utilisé?
pas grand chose :

$ /opt/ibm/java2-ppc-50/bin/javac -version
javac 1.5.0

guère mieux dans la doc fournie avec java 2/IBM...

je vais regarder sur leur site internet, mais il n'y a pas grand chose,
cette version est une beta, il y a moins d'un mois, si je ne m'abuse, elle
n'était pas sur le site IBM...

--
Une bévue

Avatar
Une bévue
Le Sun, 11 Dec 2005 17:01:18 -0500, Olivier Thomann a écrit :

Visiblement tu essayes de faire tourner du code compilé avec un compilo
1.5 sur une VM 1.4.
Si tu veux compiler tu codes 1.5, alors oui il te faut un JDK 1.5 pour
compiler et un JRE 1.5 pour l'exécuter.


ben non, j'essaie de compiler du code 1.5 avec un javac 1.5 mais IBM et
pas sun (linuxppc)...

--
Une bévue

Avatar
Une bévue
Le Fri, 09 Dec 2005 19:06:38 +0100, alexandre cartapanis a écrit :

Alors moi aussi j'ai eu ce probleme: j'ai voulu executer du code 1.5 sur
une JVM 1.4.2...

La solution que j'ai trouvé c'est d'utiliser l'option -target 1.4 de
javac. Si tu compiles avec ant, faut rajouter l'attribut target="1.4" a
la tache javac.


ben en fait c'est le "contraire" qu'il faut faire, j'ai essayé en
commande line il faut ajouter -source 1.5, et ça roule avec le *** même
*** code 1.5 :

ArrayList<JPanel> rows = new ArrayList<JPanel>();


donc c'est un truc à voir côté eclipse...

je n'ai pas encore essayé avec ant...

--
Une bévue

Avatar
Olivier Thomann
donc c'est un truc à voir côté eclipse...
Que veux-tu dire par la?

Si tu as des problemes avec Eclipse, je devrais pouvoir te depanner.
--
Olivier

1 2