# probleme compilation Java



## jean-lou (29 Mars 2006)

Bonjour,
Je suis sous Mac OS X 10.4. 
Ma version Java


> JEanlOu$ java -version
> java version "1.4.2_09"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
> Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)



Which java


> JEanlOu$ which java
> /usr/bin/java



Pour mon Tp, j ai cinq fichiers .java dans le meme dossier, d'ou ma ligne de compilation


> lns-bzn-53-82-65-35-43:/Volumes/Macintosh HD/Users/JEanlOu/Documents/INSA/java_tp/tp1_essai JEanlOu$ javac *.java



8 erreurs d'apres mon mac toute dans le meme style (sachant que le programme marche parfaitement sous Linux et sous Windows) :


> BasicMenu.java:254: cannot resolve symbol
> symbol  : method parseBoolean (java.lang.String)
> location: class java.lang.Boolean
> boolean vol = Boolean.parseBoolean(jvol.getText());
> ...



Comme si il ne comprenait pas quelque chose, ca semble etre le Jdialog qu il n a pas l air de connaitre!!
Est ce vraiment ca?
SI oui, ou le trouver ?

Merci Beaucoup
JEanlOu


----------



## GrandGibus (29 Mars 2006)

A vue de nez, le class path n'est pas défini. 

Tu peux, soit le définir en ligne de commande, soit mettre une variable d'environnement CLASSPATH. 

Par défaut, tu n'as ni l'un, ni l'autre de défini dans le bash ;-).

Par contre, je ne saurais trop te conseiller d'utiliser Ant pour gérer les différentes tâches de compilation, packaging...


----------



## GrandGibus (29 Mars 2006)

J'oubliais...
Ton environnement semble bien configuré, et les classes se trouvent sous: /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/

Dont classes.jar ...


----------



## jean-lou (29 Mars 2006)

Merci pour ta réponse !!!

Mais en fait suis trop inexpérimenté pour comprendre.
Je ne comprends pas pourquoi il faudrait un classpath puisque tous les .java concerné sont dans le répertoire courant et donc comme le classpath est justement dans le répertoire courant.



> If  neither  CLASSPATH  nor -classpath is specified, the user class  path  consists  of  the current directory



Si c'est pour qu il trouve les import qui sont au passage ceci :


> import javax.swing.*;
> import java.awt.event.*;
> import java.awt.*;
> import java.util.*;
> import java.lang.*;


J ai d ailleurs l impression que c'est java.lang qui pose probleme.
Dans ce cas donc quel est la demarche precise pour specifier les variables d'environnement (java.lang donc peut etre) ou quel est la ligne de commande a taper precisement.  

Merci beaucoup
JEanlOu


----------



## GrandGibus (29 Mars 2006)

Pour résumer, le compilateur ne trouve pas le fichier où est défini JDialog (par exemple).

Voici un code qui compile tout seul (fichier Hello.java):


> public class Hello {
> public static void main(String[] args) {
> System.out.println("Hello MacGe");
> System.exit(0);​}
> }



en faisant :


> javac Hello.java




Si par contre, je rajoute l'affichage en faisant:


> import javax.swing.JOptionPane;
> 
> public class Hello {
> public static void main(String[] args) {
> ...



je suis obligé de le compiler avec:


> javac -sourcepath System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar Hello.java


----------



## jean-lou (29 Mars 2006)

Le probleme a l'air plus terrible. J'ai des programmes relativement compliqué qui tourne (avec interface graphique et tout et tout) et pour le programme en question, ca ne marche pas, les lignes à incriminer sont celle ci 





> boolean vol = Boolean.parseBoolean(jvol.getText());
> boolean marche = Boolean.parseBoolean(jmarche.getText());
> boolean chante = Boolean.parseBoolean(jchante.getText());
> boolean dangereux = Boolean.parseBoolean(jdangereux.getText());


Apparement les booleens, il n aime pas. Je vais laisser tomber pour l instant
Desolez de tout ce derangement,
Merci de nouveau
JEanlOu


----------



## jean-lou (29 Mars 2006)

Apparement c'est un problème de version, la fonction que j'utilise n'existe pas dans la version 1.4.2, il faut donc que je compile avec la version 1.5 que j'ai déjà installé mais qui ne semble pas se mettre par défault. J'ai vu un post qui en parlait je vais donc allé voir. Merci beaucoup
JEanlOu 

Edit: Probleme de version en fait, tout simplement, desolez, Merci encore, ca marche nikel maintenant


----------



## Philou1789 (28 Avril 2006)

Auriez vous des sites de tutoriel à me proposer, voir des livres ? ou même des exemples ?


----------



## GrandGibus (28 Avril 2006)

'soir,

Quelques liens comme ça, en passant (en anglais et en français):

http://java.sun.com/docs/books/tutorial/
http://java.sun.com/docs/books/tutorial/java/index.html
http://java.developpez.com/cours/

Une fois lancé, pour Swing, par exemple, fais simplement un "how to use jmenu" dans google, et repère les site en _java.sun.com_ ... tu tomberas sur des tutos précis... 

Et puis, si tu bloques vraiment, il reste ce forum ...


----------



## molgow (28 Avril 2006)

GrandGibus a dit:
			
		

> Par contre, je ne saurais trop te conseiller d'utiliser Ant pour gérer les différentes tâches de compilation, packaging...



Ou même maven c'est plus hype pour gérer un projet...


----------



## molgow (28 Avril 2006)

J'allais le dire... il te faut compiler avec Java 1.5. La méthode parseBoolean n'existe que depuis 1.5 (liens 1.4 et 1.5).
Fais tes mises à jour systèmes si tu es en 10.4. Autrement, tu ne pourras pas installer le jdk 1.5 malheureusement.


----------



## Philou1789 (28 Avril 2006)

GrandGibus a dit:
			
		

> 'soir,
> 
> Une fois lancé, pour Swing, par exemple, fais simplement un "how to use jmenu" dans google, et repère les site en _java.sun.com_ ... tu tomberas sur des tutos précis...



Je ne pensais pas que Swing était util, je croyais que le Xcode et l'API Cocoa le remplacait ?
J'ai faux ?


----------



## ntx (28 Avril 2006)

Philou1789 a dit:
			
		

> Je ne pensais pas que Swing était util, je croyais que le Xcode et l'API Cocoa le remplacait ?
> J'ai faux ?


Swing permet d'écrire des applications exécutables sur toutes les plate-formes. Les application écrites avec Cocoa/Java ne seront exécutables que sur Mac OSX. A toi de voir ce que tu veux.


----------



## GrandGibus (29 Avril 2006)

Il faut surtout garder à l'esprit que Apple a abandonné le support Cocoa depuis Java !

Mis à part un interet purement technique et pour satisfaire une certaine curiosité, j'ai du mal à voir l'interet de développer une application Cocoa en Java, car en faisant ainsi, on perd l'un des gros avantages de Java: la portabilité (Build once, run anywhere). 

De plus, performances mise à part (quoique ça s'améliore), Swing est très bien porté sous Mac OS X. En faisant un minimum attention, difficile de différencier un programme Swing d'une application Cocoa:





.

\gg


----------



## Philou1789 (29 Avril 2006)

Donc si je résume Xcode est inutile si on veut développer en Java, il suffit juste de faire en sorte que son code java ressemble à de l'Apple avec Swing.
C'est bien ça ?


----------



## GrandGibus (29 Avril 2006)

Philou1789 a dit:
			
		

> Donc si je résume Xcode est inutile si on veut développer en Java,


Oui.., Un simple éditeur de texte peut suffir ! Quoiqu'il en soit, un IDE (Eclipse, NetBeans, XCode...) t'aidera dans l'écriture du code grace à des fonctions tells que la completions, les imports automatiques ou encore la compilation en ligne pour la vérification des erreurs en cours de frappe. 




			
				Philou1789 a dit:
			
		

> ... il suffit juste de faire en sorte que son code java ressemble à de l'Apple avec Swing...


Comme dit plus haut, Swing est une librairie pour faire des applications. Swing est fourni dans le JDK par défaut (contrairement à SWT) et son look'n'fill est déjà du mac os sous mac os, du linux sous linux et du windows... 

Si tu veux que la ressemblance soit totale, il suffit de faire attention à quelques astuces de programmation (très légères). De nombreux articles expliquent en détails ces points (ici ou là)

Le plus simple pour que tu t'en rendes compte est de développer une fenêtre type HelloWorld ...

\gg


----------



## Philou1789 (29 Avril 2006)

J'ai déjà fait le fameux tutoriel de conversion monétaire Xcode/java.
Maintenant je m'attaque à du plus lourd : Lire/ecrire dans un fichier , remplir un tableau, selectionner les lignes, en supprimer, ....

En tout cas merci pour ton aide.


----------



## ntx (29 Avril 2006)

Pour faire du Java, je trouve Eclipse tout de même plus pratique que XCode, sauf la gestion des workspaces que je n'apprécie vraiment pas.


----------



## Philou1789 (29 Avril 2006)

Quand je pense qu'il y a 3 ans j'étais un pro du .NET  depuis je ne developpe plus dutout :sick: et j'ai tout perdu :affraid::rose:


----------



## GrandGibus (29 Avril 2006)

ntx a dit:
			
		

> Pour faire du Java, je trouve Eclipse tout de même plus pratique que XCode, sauf la gestion des workspaces que je n'apprécie vraiment pas.



+1 et +1 ... Eclipse est également mon ide favori, et je le préfère de loin à XCode. Cependant, il peut en rebuter de prime abord... notament la gestion des workspaces qui est un peu obscure pour le débutant. C'est pour cela que NetBeans peut également s'avérer un bon candidat. D'autant plus qu'il me semble qu'ils viennent de sortir un éditeur WYSIWYGswing interessant. 



			
				Philou1789 a dit:
			
		

> Quand je pense qu'il y a 3 ans j'étais un pro du .NET  depuis je ne developpe plus dutout :sick: et j'ai tout perdu :affraid::rose:



Bah.... c'est comme le vélo, ça ne s'oublie pas  !


----------



## Philou1789 (29 Avril 2006)

Connaissez vous un bon livre Java + Swing ?


----------



## GrandGibus (29 Avril 2006)

Peut-être le O'Reilly ?

Pour mon cas particulier: j'ai franchit le pas vers Java en une semaine de formation (générale) alors que ça faisait 3 années que je faisais du C++ (windows MFC :casse. J'ai appris Swing d'après les tutos et le oueb au fur et à mesure des problématiques que l'on me posait (dans le cadre de ma profession )... en utilisant particulièrement les liens indiqués précedemment.


----------



## Philou1789 (29 Avril 2006)

Quand je vais developper sans xcode en pure java, je pourrais donc compiler mon code sous windows et mac osx et cela sans modifications dutout, c'est bien ça ?


cela m'interresse bcp  alors car le soir je pourrais coder au lit avec mon laptop pc et la journée reprendre le dev sur mon iMac


----------



## GrandGibus (29 Avril 2006)

Tout à fait... Tu auras même exactement le même IDE (environnement de développement) en utilisant Eclipse ou NetBeans ! (faudra juste se faire aux changements de raccourcis clavier si tu laisses les valeurs par défaut sur chacune des plateformes).


Tu peux même compiler sous mac et... exécuter (sans recompil) sous windows ! (build once, run anywhere).


----------



## Philou1789 (29 Avril 2006)

Je viens d'essayer Eclipse, bizarre quand je lance Run il me lance un autre eclipse vide ????? trop fort ça !


----------



## Philou1789 (1 Mai 2006)

Ok, j'essai Netbeans


----------



## Mulholland Max (1 Mai 2006)

Horreur et damnation!
Franchement, je suis allergique à Netbeans. Lourd, pas pratique du tout. Tout ce qu'il fait, Eclipse le fait également en mieux. Concernant XCode, je le trouve très pratique, très joli et facile à utiliser. Mais je préfère quand même mon eclipse avec tous ses plugins pour tous les langages possibles et imaginables.


----------



## molgow (1 Mai 2006)

Je connais aussi des gens qui ne jurent que par IntelliJ...
C'est une histoire de goût. Personnellement, j'ai un sacré faible pour Eclipse :love:


----------



## molgow (1 Mai 2006)

Philou1789 a dit:
			
		

> Je viens d'essayer Eclipse, bizarre quand je lance Run il me lance un autre eclipse vide ????? trop fort ça !



C'est normal que sur Mac, il te lance une nouvelle instance d'Eclipse. C'est même bien, ça permet de faire tourner plusieurs Eclipse en simultané.

Et lorsqu'il est lancé, tu arrives à une page d'aide, clique en haut à droite "return to workspace" ou un truc du genre. Et après, tu peux travailler. Prends le temps de comprendre, la découverte d'Eclipse se fait parfois avec quelques accrocs, mais après ça devient un plaisir à utiliser.


----------



## ntx (1 Mai 2006)

molgow a dit:
			
		

> Je connais aussi des gens qui ne jurent que par IntelliJ...
> C'est une histoire de goût. Personnellement, j'ai un sacré faible pour Eclipse :love:


As-tu essayé IntelliJ ? Personnellement je le trouve bien plus agréable à utiliser qu'Eclipse : plus de réactivité dans la mise à jour des différentes fenêtres, plus de facilité pour la navigation entre les classes, un plug-in CVS bien meilleur ... mais il est payant 

PS : et pas de workspaces. Je n'aime pas du tout ce principe qui concentre tous ses projets dans un seul fichier... S'il est corrompu, comme cela m'est déjà arrivé suite à un bug dans le plug-in Tomcat, tu perds tout.


----------



## molgow (1 Mai 2006)

Non, je n'ai jamais utilisé IntelliJ. Il faudrait que je teste.
Tu m'étonnes avec ton problème de workspace. Chaque projet sauvegarde des infos dans un fichier nomduprojet/.project, du coup si y a un problème avec un projet ça ne devrait pas atteindre les autres. Et si le workspace est corrompu, c'est un peu plus chiant, mais tes projets devraient être récupérables à priori...


----------



## GrandGibus (1 Mai 2006)

ntx a dit:
			
		

> PS : et pas de workspaces. Je n'aime pas du tout ce principe qui concentre tous ses projets dans un seul fichier... S'il est corrompu, comme cela m'est déjà arrivé suite à un bug dans le plug-in Tomcat, tu perds tout.



Ca doit faire 5 ans que j'utilise Eclipse quotidiennement, et je n'ai jamais eu de tels problèmes. 

Concernant le module CVS, nous nous en tenons au strict minimum (check-in/out, tags...). De plus, la décoration est vraiment des plus utiles. D'autres utilisent des clients séparés comme WinCVS ou bien encore (comme moi :rateau la ligne de commande !

Pour la perte de fichiers, c'est uniquement un fichier description qui est généré par Eclipse. D'une manière générale, le seul outil qui fait foi c'est Ant: nous avons une organisation des modules (inspirée de Floyd Marinescu EJBs Design Pattern) et c'est Eclipse qui d'adapte à notre organisation et non l'inverse !

Il nous arrive même souvent de ne pas commiter les fichiers propre à Eclipse (.wkspace) afin que tout le monde puisse avoir le choix de son IDE !


----------



## ntx (1 Mai 2006)

molgow a dit:
			
		

> Non, je n'ai jamais utilisé IntelliJ.


Oui, essaie le, je ne pense pas que tu seras déçu  Eclipse est "bien", mais IntelliJ est "mieux"


----------



## ntx (1 Mai 2006)

GrandGibus a dit:
			
		

> Ca doit faire 5 ans que j'utilise Eclipse quotidiennement, et je n'ai jamais eu de tels problèmes.


Le debug sous Tomcat n'arrive plus à trouver le code à suivre et là c'est foutu  


> Concernant le module CVS, nous nous en tenons au strict minimum (check-in/out, tags...). De plus, la décoration est vraiment des plus utiles. D'autres utilisent des clients séparés comme WinCVS ou bien encore (comme moi :rateau la ligne de commande !


Ce qui manque surtout, c'est l'outil graphique de merge.


----------



## GrandGibus (1 Mai 2006)

C'est vrai qu'au niveau merge... c'est la galère. Cependant, tu peux quand même "_comparer les versions_" et là, tu auras un affichage _à la windiff_...


----------



## molgow (2 Mai 2006)

ntx a dit:
			
		

> Le debug sous Tomcat n'arrive plus à trouver le code à suivre et là c'est foutu



Perso j'ai testé dernièrement Eclipse + WebTools + Tomcat, c'était un régal! Facile à déployer et tester ton application, par contre, ça ne te laisse pas beaucoup de souplesse... du coup je suis de nouveau avec Ant pour le build et le deploy de ma webapp. Mais ça reste un super outil pour développer vite fait un petit proto.


----------



## Philou1789 (2 Mai 2006)

Pour moi c'est définitivement NetBeans, par mes origine .NET je m'y repere mieux, et perso je le trouve très bien.


----------



## GrandGibus (2 Mai 2006)

Un gros plus de NetBeans par rapport à Eclipse est son implémentation en Swing (par rapport à Eclipse qui est en SWT). 

En fait, c'est d'avantage la faute au portage de SWT sous Mac (ppc)... Gageons que de ce coté là, le Mac Intel fasse des merveilles ...


----------

