Précédent   Forum du club des développeurs et IT Pro > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 27/07/2004, 11h39   #1
christopheJ
Expert Confirmé Sénior
 
Avatar de christopheJ
 
Inscription : avril 2004
Messages : 1 620
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : avril 2004
Messages : 1 620
Points : 4 070
Points : 4 070
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.
__________________
Rédacteur - modérateur Java
Les FAQ Java
Les cours et tutoriels Java
christopheJ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2010, 10h13   #2
Auteur
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 5 158
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 5 158
Points : 5 605
Points : 5 605
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
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2010, 14h21   #3
flotho
Membre régulier
 
Avatar de flotho
 
Homme Florent THOMAS
Architecte de système d'information
Inscription : novembre 2006
Messages : 135
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 : 135
Points : 94
Points : 94
Envoyer un message via Skype™ à flotho
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.
__________________
Créateur www.kipigo.com
Fondateur www.tdeo.fr
Linux | Java | J2EE | NB Platform | Pentaho | PostgreSQL
flotho est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 21h50   #4
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 643
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 643
Points : 12 450
Points : 12 450
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:

Citation:
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.
sinok est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 22h53   #5
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

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

Informations forums :
Inscription : avril 2007
Messages : 18 284
Points : 32 759
Points : 32 759
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
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
__________________
⥀⥁ Чиз 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.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 23h02   #6
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 643
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 643
Points : 12 450
Points : 12 450
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.
sinok est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 00h04   #7
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

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

Informations forums :
Inscription : avril 2007
Messages : 18 284
Points : 32 759
Points : 32 759
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
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
__________________
⥀⥁ Чиз 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.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 10h06   #8
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 438
Points : 22 438
+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 :
Citation:
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

Citation:
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/09/2011, 13h25   #9
Dominique49
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 267
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 16
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 267
Points : 241
Points : 241
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
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/04/2012, 10h40   #10
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 438
Points : 22 438
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h10.


 
 
 
 
Partenaires

Hébergement Web