Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 10 sur 10
  1. #1
    Responsable Eclipse et JAVA

    Avatar de Mickael Baron
    Homme Profil pro Mickael BARON
    Ingénieur de Recherche en Informatique
    Inscrit en
    juillet 2005
    Messages
    6 925
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickael BARON
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2005
    Messages : 6 925
    Points : 34 524
    Points
    34 524

    Par défaut F.A.Q Général Java - participez ici

    Bonjour à tous,

    L'équipe Java dispose d'une FAQ à l'adresse suivante : http://java.developpez.com/faq/java/.

    Nous en profitons pour remercier tous les membres du club pour leurs propositions et "bug report". Vous nous avez beaucoup aidé, merci encore. Naturellement, nous attendons avec impatience vos nouvelles propositions de Q/R ou de corrections.

    Participer à l'enrichissement de la FAQ
    Vous pouvez contribuer à l'évolution de la FAQ en proposant des questions / réponses, corrections de bugs / orthographe ...

    Règles importantes pour participer :

    • si vous proposez une question, vous devez impérativement proposer la réponse qui va avec ... (les questions sans réponses seront supprimées)
    • Un code source n'est pas une réponse en soit. Il est grandement apprécié de rédiger un paragraphe pour approfondir le sujet, apporter des précisions sur ce qu'on fait, pourquoi on fait comme ça, etc. On peut aussi en profiter pour inviter le lecteur à lire des questions/réponses dans des domaines proches ...
    • Un code source doit être court : les imports, le main ne sont pas nécessaires, aller a l'essentiel en 5 ou 6 lignes.
    • En dessous des réponses sont souvent proposés des liens, soit vers l'extérieur, soit vers des questions en rapport. Pensez à indiquer les liens utiles pour que le lecteur puisse approfondir.
    • Dans certains cas, en plus des exemples court dans la réponse, on peut ajouter un programme complet.


    Merci à tous pour vos contributions ...
    Bonne rédaction.
    Ingénieur de Recherche en informatique au LIAS / ENSMA
    Responsable des rubriques Eclipse et Java de Developpez.com

    Page de cours : mbaron.developpez.com
    Blog : keulkeul.blogspot.com
    Page Pro : www.lias-lab.fr/members/mickaelbaron
    LinkedIn : www.linkedin.com/in/mbaron
    Twitter : www.twitter.com/mickaelbaron

  2. #2
    Expert Confirmé Sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    5 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 5 584
    Points : 6 016
    Points
    6 016

    Par défaut

    Ecrire le contenu d'un JCheckBox sur plusieurs lignes.

    J'ai été confronté à ce problème lorsque je souhaitais modifier le Look And Feel de mon application : selon le L&F choisi le texte tenait sur une seule ligne ou était coupé car le texte était plus grand que mon JCheckBox.

    Etant débutant, j'avoue mettre bien cassé la tête sur ce problème avant de trouver une solution qui me convenait parfaitement.


    Pour écrire sur plusieurs lignes, il faut écrire le texte entre des balises HTML.
    Il y a plusieurs possibilités :
    1- Imposer le retour à la ligne (c'est le résultat qui est le plus souvent renvoyé lorsque l'on fait une recherche sur ce problème) :
    Code :
    1
    2
    3
     
    JCheckBox chk = new JCheckBox(); 
    chk.setText("<html>Mon texte sur <br/> 2 lignes</html>");
    L'inconvénient est qu'il faut savoir où couper la ligne.

    2- Laisser le composant faire la mise en page : on va encadrer le texte par des balises span (solution qui me convient beaucoup mieux)
    Code :
    1
    2
    3
     
    JCheckBox chk = new JCheckBox(); 
    chk.setText("<html><span>Mon texte sur 2 lignes ou plus si c'est nécessaire</span></html>");
    Le texte sera écrit sur plusieurs lignes uniquement si c'est nécessaire.

    Dans les deux cas il faut prévoir de la place sous le composant

  3. #3
    Membre habitué Avatar de flotho
    Homme Profil pro Florent THOMAS
    Architecte de système d'information
    Inscrit en
    novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Nom : Homme Florent THOMAS
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : novembre 2006
    Messages : 146
    Points : 107
    Points
    107

    Par défaut

    Bonjour,

    Après de nombreuses recherches sur plusieurs forums, j'ai trouvé une alternative rapide et fonctionnelle au code suivant :
    http://java.developpez.com/faq/java/...YSTEME_dir_jar

    Je le trouve peu fonctionnel.
    Le code suivant fonctionne correctement chez moi.
    Code :
    1
    2
    3
    4
     
    URI urlCourante = getClass().getProtectionDomain().getCodeSource().getLocation().toURI();
    File root = new File(urlCourante);
    System.out.println("Url courante : " + root.getParent());
    Il est issu de la compilation de nombreux posts.
    Fondateur www.mind-and-go.com
    Créateur www.kipigo.com
    Linux | Java EE | NB Platform | Pentaho | PostgreSQL | OpenERP

  4. #4
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 757
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 757
    Points : 11 828
    Points
    11 828

    Par défaut

    En ce qui concerne la section CLASSPATH de la faq, je recommanderait assez fort de virer la partie qui concerne la variable d'environnement CLASSPATH au niveau OS. En effet définir le classpath de cette façon est assez dangereux, pose problème ensuite lors des déploiement et peut amener à des problèmes de conflit entre jars.

    Pour moi cette entrée devrait être la suivante:

    Il y a différentes manières de définir le CLASSPATH.

    Lorsqu'on compile ou qu'on lance un programme Java, plusieurs solutions s'offrent à nous :


    1) En utilisant les options -classpath ou -cp de java/javac.

    Exemple Unix/Linux :

    java -classpath ./lib/archive.jar:./classes ma.classe.Principale



    Exemple Windows :

    java -classpath ./lib/archive.jar;./classes ma.classe.Principale



    2) Lorsqu'on exécute un jar exécutable avec l'option -jar de java, la solution précédente ne fonctionne pas.
    La seule et unique solution consiste à renseigner l'attribut Class-Path de son fichier Manifest. A noter toutefois que le jar exécutable fera automatiquement partie du CLASSPATH.

    Code :
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: com.toto.monappli.MaClasseMain
    Class-Path: libtoto.jar lib/truc.jar lib/machin.jar

    3) Lorsqu'on exécute une application Java Web Start, les différents éléments du CLASSPATH sont défini dans le descripteur *.jnlp via l'élément resources.

    Code xml :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="utf-8"?> 
      <!-- JNLP File for SwingSet2 Demo Application    --> 
      <jnlp 
        spec="1.0+" 
        codebase="http://my_company.com/jaws/apps" 
        href="monjnlp.jnlp"> 
        <information> 
          <title>Mon Application</title>    
          <vendor>Toto</vendor>    
          <homepage href="docs/help.html"/> 
          <description>Mon Application Demo</description>    
          <description kind="short">Démonstration de mon application</description> 
          <icon href="images/monApp.jpg"/> 
          <icon kind="splash" href="images/splash.gif"/>    
          <offline-allowed/> 
        </information> 
        <security> 
            <all-permissions/> 
        </security> 
        <resources> 
          <j2se version="1.4.2"/> 
          <jar href="lib/toto.jar"/> 
          <jar href="lib/truc.jar"/> 
          <jar href="lib/machin.jar"/> 
          <jar href="appli.jar"/> 
        </resources> 
        <application-desc main-class="MaClasseMain"/> 
      </jnlp>



    Remarque : la plupart des EDIs permettent de configurer simplement le CLASSPATH depuis leur interface graphique.

    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 451
    Points : 35 311
    Points
    35 311

    Par défaut

    la variable d'environnement devrait être renseignée dans la DOC. Pourquoi, parce que certains script (exemple tomcat) jouent avec et il est toujours bon de savoir ce que ça fait. Aussi, on parle de classpath ou, éventuellement, de ClassPath. CLASSPATH c'est la variable d'environnement, ne pas confondre
    Il n'y a aucun mal à préférer CLASSPATH à -cp, si le set de CLASSPATH est local à l'exécution et permet de gagner du temps:

    Code :
    1
    2
    3
    4
    export CLASSPATH=jar1:jar2:jar3:jar3:classes/
    java org.Main1 fichier out1
    java org.Main2 fichier out2
    java org.Main3 out1 out2
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  6. #6
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 757
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 757
    Points : 11 828
    Points
    11 828

    Par défaut

    Dans ce cas là, au moins la passer à la fin de l'entrée et non en première. Pour éviter que les débutants le prenne comme étant la méthode standard.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 451
    Points : 35 311
    Points
    35 311

    Par défaut

    on est d'accord, c'est la méthode la moins recommandable

    En même temps, après réflexion, on parle d'un FAQ là, et CLASSPATH (la variable d'environnement) c'est pas le truc le plus courant à modifier. En fait, il faudrait un FAQ "j'ai redéfinis la variable d'environnement CLASSPATH et tchize_ m'a donnée des coup de pieds au cul, pourquoi?" parce que, effectivement dans 99% des cas, c'est du n'importe quoi.

    Donc en fait, j'appuie ta première proposition
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  8. #8
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 263
    Points : 19 325
    Points
    19 325

    Par défaut

    +1 Plutôt que d'ignorer la variable d'environnement CLASSPATH il serait préférable d'en parler, et d'indiquer clairement le problème.


    Je me suis permis d'éditer un peu la Q/R :
    Il y a différentes manières de définir le ClassPath.

    Lorsqu'on compile ou qu'on lance un programme Java, plusieurs solutions s'offrent à nous :



    1) En créant une variable d'environnement CLASSPATH, qui contiendra une liste de chemin vers les répertoires/archives du ClassPath
    (Note : le séparateur de chemin dépend du système d'exploitation hôte).


    Exemple Unix/Linux :

    Code :
    1
    2
    export CLASSPATH=./lib/archive.jar:./classes
    java ma.classe.Principale


    Exemple Windows :

    Code :
    1
    2
    set CLASSPATH=./lib/archive.jar;./classes
    java ma.classe.Principale

    Attention : L'utilisation de la variable d'environnement CLASSPATH est fortement déconseillée puisque cela pourrait impacter d'autre applications Java.



    2) En utilisant les options -classpath ou -cp de java/javac.
    Lorsqu'on utilise -classpath ou -cp, la variable d'environnement CLASSPATH est ignoré.

    Exemple Unix/Linux :

    Code :
    java -classpath ./lib/archive.jar:./classes ma.classe.Principale


    Exemple Windows :

    Code :
    java -classpath ./lib/archive.jar;./classes ma.classe.Principale

    Depuis Java 6 il est possible d'utiliser le wildcard * qui représente toutes les archives *.jar d'un répertoire.
    Code :
    java -classpath "lib/*" ma.classe.Principale
    (Il peut être neccessaire de protéger la chaine avec des quotes afin d'éviter que le meta-caractère * ne soit interprété au niveau du Shell).


    3) En utilisant l'option -jar et le Manifest pour une archive jar exécutable.
    Lorsqu'on exécute un jar exécutable avec l'option -jar de java, les options -classpath ou -cp et la variable d'environnement CLASSPATH sont ignorés.
    La seule et unique solution consiste à renseigner l'attribut Class-Path de son fichier Manifest. A noter également que le jar exécutable fera automatiquement partie du ClassPath.

    Code :
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: com.toto.monappli.MaClasseMain
    Class-Path: libtoto.jar lib/truc.jar lib/machin.jar
    Les éléments du Class-Path du manifest représente un chemin relatif dépendant de l'emplacement du jar principal (attention : le meta-caractère * ne peut pas être utilisé ici)



    4) Lorsqu'on exécute une application Java Web Start, les différents éléments du ClassPath sont définis dans le descripteur *.jnlp via l'élément resources.

    Code xml :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="utf-8"?> 
      <!-- JNLP File for SwingSet2 Demo Application    --> 
      <jnlp 
        spec="1.0+" 
        codebase="http://my_company.com/jaws/apps" 
        href="monjnlp.jnlp"> 
        <information> 
          <title>Mon Application</title>    
          <vendor>Toto</vendor>    
          <homepage href="docs/help.html"/> 
          <description>Mon Application Demo</description>    
          <description kind="short">Démonstration de mon application</description> 
          <icon href="images/monApp.jpg"/> 
          <icon kind="splash" href="images/splash.gif"/>    
          <offline-allowed/> 
        </information> 
        <security> 
            <all-permissions/> 
        </security> 
        <resources> 
          <j2se version="1.4.2"/> 
          <jar href="lib/toto.jar"/> 
          <jar href="lib/truc.jar"/> 
          <jar href="lib/machin.jar"/> 
          <jar href="appli.jar"/> 
        </resources> 
        <application-desc main-class="MaClasseMain"/> 
      </jnlp>


    Remarque : la plupart des EDIs permettent de configurer simplement le ClassPath depuis leur interface graphique.

    a++

  9. #9
    Membre confirmé
    Homme Profil pro Dominique
    Première S
    Inscrit en
    juillet 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Nom : Homme Dominique
    Âge : 18
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : juillet 2010
    Messages : 267
    Points : 216
    Points
    216

    Par défaut

    Bonjour,
    je me permet de poster ici car j'ai une question concernant les thèmes abordés dans cette FAQ ...

    Voilà, je voudrais savoir si on ne peux pas poser un pb, et expliquer le pourquoi et le comment. Pour prendre un exemple pratique, j'ai galéré plusieurs jours avant de trouver la cause d'une exception en RMI.

    je ne m'étalerai pas en détails, mais sachez que ce problème ne figure sur aucun forum (toutes langues comprises).

    c'est pourquoi il serait intéressant de partagé son expérience ... mais la FAQ est-elle le bon endroit pour ce genre de choses.

    A savoir que les réponses sont quelquefois horriblement simples, ce qui n’empêche pas qu'elles peuvent faire chercher très longtemps ...

    Voilà, c'était ma question ...
    merci beaucoup.

    NB

    Tant que j'y suis, je ne sais pas trop quelle catégorie conviendrai pour RMI ... Général ? surtout qu'il y a une catégorie "flux et réseaux" dans la Faq générale je crois ...
    merci.

    Dominique.


    EDIT (13:36)


    pour résumer, ce ne serait pas des questions/réponses mais plutôt des problèmes/solutions

  10. #10
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 263
    Points : 19 325
    Points
    19 325

    Par défaut

    Petite modification à apporter dans la Q/R Comment supprimer les accents d'une chaîne ?

    L'exemple pour Java 6 avec les diacritiques utilise un code suivant :
    Code :
    1
    2
    3
    4
    public static String sansAccents(String source) {
    	return Normalizer.normalize(source, Normalizer.Form.NFD)
    		.replaceAll("[\u0300-\u036F]", "");
    }
    Or je viens de découvrir via ce billet qu'il existe une classe dans les patterns pour cela : \p{InCombiningDiacriticalMarks}. Il serait donc plus propre de l'utiliser, ce qui nous donnerait :
    Code :
    1
    2
    3
    4
    public static String sansAccents(String source) {
    	return Normalizer.normalize(source, Normalizer.Form.NFD)
    		.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
    }

    a++

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •