Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thomas Cornet
Je viens d'avoir ce genre de warning la semaine dernière.... Pour désactiver c'est simple :
- menu 'Window' - item 'Preferences' - section 'Compiler' - onglet 'style' la dernière check-box en bas qui a comme libellé 'Serializable class without serialVersionUID' a pour value par défaut 'Warning'. Il suffit de sélectionner 'Ignore', et les warnings disparaitront.
Pour ce qui est de la serialization, une classe qui implémente l'interface Serializable indique que son contenu peut être transféré dans un flux de données, typiquement pour sauver une instance de classe dans un fichier par exemple, ou pour la passer par une socket.
Quand au 'serialVersionUID', je suppose qu'il permet de distinguer quelle version de la classe a été utilisée, par exemple pour éviter de désérializer un flux de données dans une classe plus récente, qui a par exemple un champ en plus ou en moins. Enfin bon, ce sont juste des suppositions, la première fois que j'en ai entendu parler est quand Eclipse a mis ses warnings.
Thomas
Bonjour,
je viens tout juste de passer à eclipse... j'ai fait un import de mes fichiers projet et j'ai un warning d' eclipse :
the serialisable class DBManagerDesktopAdmin does not declare a static final serialVersionUID field of type long.
c'est à : public class DBManagerDesktopAdmin extends JFrame implements ActionListener {
ça compile et run impec, je sais "très vaguement" ce que sont les sérialisables, à quoi me servirai ce "serialVersionUID" ?
Je viens d'avoir ce genre de warning la semaine dernière.... Pour
désactiver c'est simple :
- menu 'Window'
- item 'Preferences'
- section 'Compiler'
- onglet 'style'
la dernière check-box en bas qui a comme libellé 'Serializable class
without serialVersionUID' a pour value par défaut 'Warning'. Il suffit de
sélectionner 'Ignore', et les warnings disparaitront.
Pour ce qui est de la serialization, une classe qui implémente l'interface
Serializable indique que son contenu peut être transféré dans un flux de
données, typiquement pour sauver une instance de classe dans un fichier par
exemple, ou pour la passer par une socket.
Quand au 'serialVersionUID', je suppose qu'il permet de distinguer quelle
version de la classe a été utilisée, par exemple pour éviter de
désérializer un flux de données dans une classe plus récente, qui a par
exemple un champ en plus ou en moins. Enfin bon, ce sont juste des
suppositions, la première fois que j'en ai entendu parler est quand Eclipse
a mis ses warnings.
Thomas
Bonjour,
je viens tout juste de passer à eclipse...
j'ai fait un import de mes fichiers projet et j'ai un warning d' eclipse
:
the serialisable class DBManagerDesktopAdmin does not declare a static
final serialVersionUID field of type long.
c'est à :
public class DBManagerDesktopAdmin extends JFrame implements
ActionListener {
ça compile et run impec, je sais "très vaguement" ce que sont les
sérialisables, à quoi me servirai ce "serialVersionUID" ?
Je viens d'avoir ce genre de warning la semaine dernière.... Pour désactiver c'est simple :
- menu 'Window' - item 'Preferences' - section 'Compiler' - onglet 'style' la dernière check-box en bas qui a comme libellé 'Serializable class without serialVersionUID' a pour value par défaut 'Warning'. Il suffit de sélectionner 'Ignore', et les warnings disparaitront.
Pour ce qui est de la serialization, une classe qui implémente l'interface Serializable indique que son contenu peut être transféré dans un flux de données, typiquement pour sauver une instance de classe dans un fichier par exemple, ou pour la passer par une socket.
Quand au 'serialVersionUID', je suppose qu'il permet de distinguer quelle version de la classe a été utilisée, par exemple pour éviter de désérializer un flux de données dans une classe plus récente, qui a par exemple un champ en plus ou en moins. Enfin bon, ce sont juste des suppositions, la première fois que j'en ai entendu parler est quand Eclipse a mis ses warnings.
Thomas
Bonjour,
je viens tout juste de passer à eclipse... j'ai fait un import de mes fichiers projet et j'ai un warning d' eclipse :
the serialisable class DBManagerDesktopAdmin does not declare a static final serialVersionUID field of type long.
c'est à : public class DBManagerDesktopAdmin extends JFrame implements ActionListener {
ça compile et run impec, je sais "très vaguement" ce que sont les sérialisables, à quoi me servirai ce "serialVersionUID" ?
yvon.thoravalNO-SPAM
Thomas Cornet wrote:
Enfin bon, ce sont juste des suppositions, la première fois que j'en ai entendu parler est quand Eclipse a mis ses warnings.
Ah d'accord, merci pour les infos...
Je me suis fait très peur en passant de command line à Eclipse, pour compiler, eclipse me donnait tout un tas d'erreurs (dont le warning + haut) du genre : vous devriez implémenté une interface etc...
En fait j'avais oublié de transférer ceratins fichiers ...
Au fait, sais-tu comment ne pas faire apparaître une arborescence dans un projet ?
J'ai toute une arborescence d'images et d'html qui polluent le java...
La présentation en package est un peu fastidieuse je trouve :
plutôt qu'avoir :
yt.tools yt.tools.dbmstable
j'aurai préféré le système de folder :
yt.tools
qui s'ouvrent :
yt.yools
dbmstable
bon, mais ca marche super bien swt aussi sur macos maintenant, avec une petite bidouille à faire...
ça m'a permis de nettoyer mes import (ations) frauduleuses...
-- yt
Thomas Cornet <thomas@cornet.name> wrote:
Enfin bon, ce sont juste des
suppositions, la première fois que j'en ai entendu parler est quand Eclipse
a mis ses warnings.
Ah d'accord, merci pour les infos...
Je me suis fait très peur en passant de command line à Eclipse, pour
compiler, eclipse me donnait tout un tas d'erreurs (dont le warning +
haut) du genre : vous devriez implémenté une interface etc...
En fait j'avais oublié de transférer ceratins fichiers ...
Au fait, sais-tu comment ne pas faire apparaître une arborescence dans
un projet ?
J'ai toute une arborescence d'images et d'html qui polluent le java...
La présentation en package est un peu fastidieuse je trouve :
plutôt qu'avoir :
yt.tools
yt.tools.dbmstable
j'aurai préféré le système de folder :
yt.tools
qui s'ouvrent :
yt.yools
dbmstable
bon, mais ca marche super bien swt aussi sur macos maintenant, avec une
petite bidouille à faire...
ça m'a permis de nettoyer mes import (ations) frauduleuses...
Enfin bon, ce sont juste des suppositions, la première fois que j'en ai entendu parler est quand Eclipse a mis ses warnings.
Ah d'accord, merci pour les infos...
Je me suis fait très peur en passant de command line à Eclipse, pour compiler, eclipse me donnait tout un tas d'erreurs (dont le warning + haut) du genre : vous devriez implémenté une interface etc...
En fait j'avais oublié de transférer ceratins fichiers ...
Au fait, sais-tu comment ne pas faire apparaître une arborescence dans un projet ?
J'ai toute une arborescence d'images et d'html qui polluent le java...
La présentation en package est un peu fastidieuse je trouve :
plutôt qu'avoir :
yt.tools yt.tools.dbmstable
j'aurai préféré le système de folder :
yt.tools
qui s'ouvrent :
yt.yools
dbmstable
bon, mais ca marche super bien swt aussi sur macos maintenant, avec une petite bidouille à faire...
ça m'a permis de nettoyer mes import (ations) frauduleuses...
-- yt
Olivier Thomann
ça compile et run impec, je sais "très vaguement" ce que sont les sérialisables, à quoi me servirai ce "serialVersionUID" ? Ça n'empèche pas de tourner correctement. L'idée de ce warning est que
ta classe est "serialisable". Or si tu ne définis pas de champ serialVersionUID et que tu sérialises les instances de cette classe, tu vas utiliser la sérialisation par défaut. Ceci veut dire que si ta classe utilise des classes locales ou des "class literaux", tu risques d'être dépendant du compilateur utilisé pour compiler ta classe. La sérialisation est en effet trèes mal spécifiée en Java. Elle utilise les méthodes définies dans la classe pour calculer un serialVersionUID si aucun n'est explicitement spécifié. Malheureusement si ta classe définie des classes locales ou autre cas dans lesquels le compilateur peut rajouter des méthodes dites synthétiques, le calcul de cette valeur sera modifié. Je te conseille donc fortement de définir ce champ serialVersionUID. Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le bouton droit de la souris sur le warning dans la barre verticale et tu auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la bonne valeur. Pratique, non? Donc bon conseil, définis ce champ :-). -- Olivier
ça compile et run impec, je sais "très vaguement" ce que sont les
sérialisables, à quoi me servirai ce "serialVersionUID" ?
Ça n'empèche pas de tourner correctement. L'idée de ce warning est que
ta classe est "serialisable".
Or si tu ne définis pas de champ serialVersionUID et que tu sérialises
les instances de cette classe, tu vas utiliser la sérialisation par
défaut. Ceci veut dire que si ta classe utilise des classes locales ou
des "class literaux", tu risques d'être dépendant du compilateur utilisé
pour compiler ta classe. La sérialisation est en effet trèes mal
spécifiée en Java. Elle utilise les méthodes définies dans la classe
pour calculer un serialVersionUID si aucun n'est explicitement spécifié.
Malheureusement si ta classe définie des classes locales ou autre cas
dans lesquels le compilateur peut rajouter des méthodes dites
synthétiques, le calcul de cette valeur sera modifié.
Je te conseille donc fortement de définir ce champ serialVersionUID.
Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le
bouton droit de la souris sur le warning dans la barre verticale et tu
auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la
bonne valeur.
Pratique, non?
Donc bon conseil, définis ce champ :-).
--
Olivier
ça compile et run impec, je sais "très vaguement" ce que sont les sérialisables, à quoi me servirai ce "serialVersionUID" ? Ça n'empèche pas de tourner correctement. L'idée de ce warning est que
ta classe est "serialisable". Or si tu ne définis pas de champ serialVersionUID et que tu sérialises les instances de cette classe, tu vas utiliser la sérialisation par défaut. Ceci veut dire que si ta classe utilise des classes locales ou des "class literaux", tu risques d'être dépendant du compilateur utilisé pour compiler ta classe. La sérialisation est en effet trèes mal spécifiée en Java. Elle utilise les méthodes définies dans la classe pour calculer un serialVersionUID si aucun n'est explicitement spécifié. Malheureusement si ta classe définie des classes locales ou autre cas dans lesquels le compilateur peut rajouter des méthodes dites synthétiques, le calcul de cette valeur sera modifié. Je te conseille donc fortement de définir ce champ serialVersionUID. Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le bouton droit de la souris sur le warning dans la barre verticale et tu auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la bonne valeur. Pratique, non? Donc bon conseil, définis ce champ :-). -- Olivier
yvon.thoravalNO-SPAM
Olivier Thomann wrote:
Donc bon conseil, définis ce champ :-).
Merci pour tous ces conseils et explixations, je pense effectivement qu'eclipse va me faire faire des progres en java, cet IDE est vraiment très bien fichu... -- yt
Merci pour tous ces conseils et explixations, je pense effectivement
qu'eclipse va me faire faire des progres en java, cet IDE est vraiment
très bien fichu...
--
yt
Merci pour tous ces conseils et explixations, je pense effectivement qu'eclipse va me faire faire des progres en java, cet IDE est vraiment très bien fichu... -- yt
yvon.thoravalNO-SPAM
Olivier Thomann wrote:
Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le bouton droit de la souris sur le warning dans la barre verticale et tu auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la bonne valeur. Oui, ben là je suis embarrassé car j'ai deux options default value () au
generated (), que me conseilles-tu ? A quoi correspond le generated, a qqc en fonction de la date par exemple ?
Pratique, non? Oui, effectivement très très pratique, après mon importation j'ai
beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un sacré coup de balai dans mes import faits à coup de cut'n paste )))
Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le
bouton droit de la souris sur le warning dans la barre verticale et tu
auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la
bonne valeur.
Oui, ben là je suis embarrassé car j'ai deux options default value () au
generated (), que me conseilles-tu ? A quoi correspond le generated, a
qqc en fonction de la date par exemple ?
Pratique, non?
Oui, effectivement très très pratique, après mon importation j'ai
beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un
sacré coup de balai dans mes import faits à coup de cut'n paste )))
Pour te simplifier la tâche, tu as simplement besoin de cliquer avec le bouton droit de la souris sur le warning dans la barre verticale et tu auras un "quickfix" qui te proposera d'ajouter le field pour toi avec la bonne valeur. Oui, ben là je suis embarrassé car j'ai deux options default value () au
generated (), que me conseilles-tu ? A quoi correspond le generated, a qqc en fonction de la date par exemple ?
Pratique, non? Oui, effectivement très très pratique, après mon importation j'ai
beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un sacré coup de balai dans mes import faits à coup de cut'n paste )))
-- yt
Olivier Thomann
Oui, ben là je suis embarrassé car j'ai deux options default value () au generated (), que me conseilles-tu ? A quoi correspond le generated, a qqc en fonction de la date par exemple ? Utilise le generated. Cela correspond à la valeur du champ généré par
l'outil serialver du SDK.
Oui, effectivement très très pratique, après mon importation j'ai beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un sacré coup de balai dans mes import faits à coup de cut'n paste ))) Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring
et tu verras qu'il peut être très très puissant :-). -- Olivier
Oui, ben là je suis embarrassé car j'ai deux options default value () au
generated (), que me conseilles-tu ? A quoi correspond le generated, a
qqc en fonction de la date par exemple ?
Utilise le generated. Cela correspond à la valeur du champ généré par
l'outil serialver du SDK.
Oui, effectivement très très pratique, après mon importation j'ai
beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un
sacré coup de balai dans mes import faits à coup de cut'n paste )))
Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring
et tu verras qu'il peut être très très puissant :-).
--
Olivier
Oui, ben là je suis embarrassé car j'ai deux options default value () au generated (), que me conseilles-tu ? A quoi correspond le generated, a qqc en fonction de la date par exemple ? Utilise le generated. Cela correspond à la valeur du champ généré par
l'outil serialver du SDK.
Oui, effectivement très très pratique, après mon importation j'ai beaucoup utilisé Source > Format et surtout Sorce > Organize Import, un sacré coup de balai dans mes import faits à coup de cut'n paste ))) Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring
et tu verras qu'il peut être très très puissant :-). -- Olivier
yvon.thoravalNO-SPAM
Olivier Thomann wrote:
Utilise le generated. Cela correspond à la valeur du champ généré par l'outil serialver du SDK.
C'est ce que j'ai pensé, mais là, eclipse freeze...
Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring et tu verras qu'il peut être très très puissant :-). Y-a-t'il un "hypertext" search'n replace c'est-à-dire un outil
permettant de changer une chaine de caractères sur un ensemble de fichiers ? -- yt
Utilise le generated. Cela correspond à la valeur du champ généré par
l'outil serialver du SDK.
C'est ce que j'ai pensé, mais là, eclipse freeze...
Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring
et tu verras qu'il peut être très très puissant :-).
Y-a-t'il un "hypertext" search'n replace c'est-à-dire un outil
permettant de changer une chaine de caractères sur un ensemble de
fichiers ?
--
yt
Utilise le generated. Cela correspond à la valeur du champ généré par l'outil serialver du SDK.
C'est ce que j'ai pensé, mais là, eclipse freeze...
Ceci ne sont que quelques possibiités d'Eclipse. Utilise le refactoring et tu verras qu'il peut être très très puissant :-). Y-a-t'il un "hypertext" search'n replace c'est-à-dire un outil
permettant de changer une chaine de caractères sur un ensemble de fichiers ? -- yt