IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

Créer seulement une classe main [Débutant(e)]


Sujet :

NetBeans Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut Créer seulement une classe main
    Bonjour,

    J'apprend à programmer en JAVA avec NETBEANS. Je suis un document pour apprendre et ce doc contient des exemples que je refait.
    Mais là, j'ai un programme qui ne contient pas d'erreur si ce n'est qu'il n'y a pas de main.

    Mais quand j'essaie de créer un main dans NETBEANS, il me le met toujours à l'intérieur d'une classe alors que je le veux tout seul (et si j'efface la classe il y a un problème).

    Donc, voici mon programme que je souhaite lancer à partir de main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package personne;
     
    import java.util.GregorianCalendar;
     
    /**
     *
     * @author kimilie
     */
     
    public class Personne {
     
            private String nom;
            private String prenom;
            private GregorianCalendar date_nais;
            //champ privé représentant le numéro de la personne
            private int numero;
            //champ statique privé représentant le compteur de personnes
            private static int nbInstances;
     
            //méthode d'instance permettant d'obtenir le numéro d'une personne
            public int getNumero(){
                return numero;
            }
            //méthode statique permettant d'obtenir le nombre d'instances crées 
            public static int getnbInstances(){
                return nbInstances;
            }
     
            //constructeurs
            public Personne(){
                nom="";
                prenom="";
                date_nais=null;
                //création d'une nouvelle personne donc incrémentation du compteur
                nbInstances++;
                //affectation à la nouvelle personne de son numéro
                numero = nbInstances;
            }
     
            public Personne(String n, String p, GregorianCalendar d){
                nom=n;
                prenom=p;
                date_nais=d;
            }
            //asseceurs
            public String getNom(){
                return nom;
            }
     
            public void setNom(String n){
                nom = n.toUpperCase();
            }
     
            public String getPrenom(){
                return prenom;
            }
     
            public void setPrenom(String p){
                prenom = p.toLowerCase();
            }
     
            //méthodes
            public long calculAge(){
                long age;
                date_nais=new GregorianCalendar(1963, 11, 29);
                age=new GregorianCalendar().getTimeInMillis() -date_nais.getTimeInMillis();
                age = age/1000/60/60/24/365;
                return age;
            }
     
            public void agffichage(){
                System.out.println("nom :" + nom);
                System.out.println("prenom : " + prenom);
                System.out.println("âge : " + calculAge());
            }
        }
    et donc j'ai aussi créé une classe que j'ai appelé "main" et dans laquelle j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package personne;
     
    /**
     *
     * @author kimilie
     */
    public static void main(String[] args) {
        personne.Personne;
    }
    Merci,
    OS : LinuxMint 20

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 807
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 807
    Points : 7 613
    Points
    7 613
    Par défaut
    Salut,

    Citation Envoyé par francky74 Voir le message
    Mais quand j'essaie de créer un main dans NETBEANS, il me le met toujours à l'intérieur d'une classe alors que je le veux tout seul (et si j'efface la classe il y a un problème).
    Et oui... c'est un bug connu depuis... 1996? Depuis la version 1.0 de Java...
    Je m'avance peut-être un peu, je ne connais java que depuis la 1.4

    Pour ta main-class, l'instanciation ne se fait pas de cette manière, mais dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Personne taPersonne=new Personne();
    et ensuite tu peux appeler les méthodes de la classe sur ton objet "taPersonne".

    Donc, revoir les bases de la programmation en Java... avant de râler après Netbeans!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut

    Un bug depuis 1996 ! pas mal !

    bon je vais tester votre réponse !

    Merci beaucoup
    OS : LinuxMint 20

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut class, interface, or enum expected
    Bonjour,

    Donc j'ai modifié l'instanciation comme il m'a été conseillé.
    Je recontre un erreur de la part de NETBEANS "class, interface or enum expected"
    Voici quelques copies d'écran pour aider à la compréhension :



    Donc là je pense que je suis pas trop mal mais il y a cette erreur que je ne comprends pas puisque main étant la méthode d'entrée dans le programme, comment se fait il que NETBEANS attende une classe, une interface ou une énumération (de variables je suppose ???)

    Merci pour vos aides !
    OS : LinuxMint 20

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut Sujet déplacé dans JAVA débutants
    J'ai déplacé cette discussion dans le forum JAVA débutants.
    OS : LinuxMint 20

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Une méthode "main" doit TOUJOURS vivre à l'intérieure d'une classe, publique de préférence.

    Désolé, aucun raccourci, ni aucune syntaxe de remplacement. Le code doit toujours ressembler à ceci à un moment donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Main {
        public static void main(String[] args) {}
    }
    Java != C/C++

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Réponse ici
    valable aussi pour l'autre discussion
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Eviter aussi de nommer package, classe, méthode de la même façon.

    Une majuscule pour les classes aussi, convention de nommage qui permet de s'y retrouver. Ça améliore la lisibilité =)
    F*ck it ! Do it !

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Merci pour ces précieux conseils !
    OS : LinuxMint 20

  10. #10
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 807
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 807
    Points : 7 613
    Points
    7 613
    Par défaut
    Citation Envoyé par francky74 Voir le message

    Un bug depuis 1996 ! pas mal !
    Rah flûte zut, faut que j'arrête de faire du second degré!
    Ce n'est pas un bug, c'est une fonctionnalité!

    Bref, voir les réponses précédentes... et revoir un tuto débutant en Java, tu ne vas jamais réussir à progresser avec Netbeans sinon...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  11. #11
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par plegat Voir le message
    Rah flûte zut, faut que j'arrête de faire du second degré!
    oui, ça ne marche pas avec tout le monde

    Citation Envoyé par plegat Voir le message
    et revoir un tuto débutant en Java
    heu oui ça aussi surtout même
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Yep !

    J'avais compris que "le bug" était une blague ... et c'est pour cela que j'ai dit pas mal, car cela m'a fait rigoler.


    En ce qui concerne les tutos, j'ai l'impression qu'il manque des petites choses permettant de mieux accrocher la compréhension.
    Mais c'est personnel bien sûr car j'imagine que d'autres débutants ont pu directement infuser dans le bain java dès leur entrée en matière !

    Moi, je comprends bien les boucles, les expressions conditionnelles ... etc, tous ces trucs que l'on retrouve en basic, en VBA ou en C/C++. C'est juste comment organiser mon main et le fichier Main.java qui me manque pour bien me lancer.

    Par exemple, je n'ai trouvé nulle part que je pouvais placer la méthode Main dans un fichier à part des autres classes et même dans un auitre package.

    merci
    OS : LinuxMint 20

  13. #13
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 807
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 807
    Points : 7 613
    Points
    7 613
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Par exemple, je n'ai trouvé nulle part que je pouvais placer la méthode Main dans un fichier à part des autres classes et même dans un auitre package.
    C'est exact... d'une manière similaire, tu ne trouveras nulle part que 1+1=3 (sauf chez quelques illuminés...)

    Tu cherches à faire quelque chose qui ne se fait pas en Java.

    C'est pas possible.

    C'est pas prévu pour.

    En fait tu raisonnes à l'envers.

    C'est comme si tu avais une clef et que tu cherchais le trou où la mettre pour faire démarrer la voiture... mais sans avoir de voiture!

    Java ça fonctionne dans l'autre sens. Tu as une voiture, et si tu veux la démarrer, il faut mettre la clef dans le trou. Et pas l'inverse.

    Donc, tu fais une classe, et dans cette classe, tu mets une méthode main pour lancer l'exécution. Et tiens-toi bien... si tu as 50 classes, tu peux très bien avoir une méthode main par classe, soit 50 méthodes main au total! Encore plus fort, imagine que tu aies 3 packages, avec chacun 50 classes, et une méthode main pour chaque classe, ça te fait... et oui, 150 méthodes main!

    Bref, il faut te déconnecter complètement de tes habitudes en C++. En C++, le point d'entrée du programme est la fonction main. En Java, il n'y a pas une et une seule et unique méthode main. Il y en a... un certain nombre, supérieur ou égal à un (je parle pour une application... les bibliothèques et fichiers jar, c'est une autre histoire).
    Pour remédier au problème du point d'entrée de ton programme, tu le lances en spécifiant ta "main class", celle qui contient la méthode main principale:

    (ou directement en paramètre de lancement dans ton projet Netbeans), main class qui doit obligatoirement contenir une méthode main, sous peine d'erreur.

    Rien ne t'empêche de faire une classe Main de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Main {
     
        public static void main(String[] args) {
            // ton code ici
        }
     
    }
    l'intérêt est limité, il va falloir à un moment que tu instancies une classe pour pouvoir faire quelque chose, donc autant mettre ton main dans cette classe!
    Mais c'est faisable... mais c'est pas beau, et pas très utile... et en prime ça montre aux autres que tu n'as pas tout compris à Java donc faut pas le faire!

    Un peu de lecture que je te conseille: la bible de jmdoudoux, chapitre 2
    Ce chapitre aborde tous les concepts où tous les débutants se vautrent allègrement quand ils commencent par utiliser Netbeans avant d'apprendre à programmer en Java à la main (classes, packages, classpath...). Main, avec des doigts, pas main, la méthode...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  14. #14
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    En plus, ça ne sert à rien de se mettre la rate au court bouillon
    car en général, le point d'entrée d'une application c'est un écran d'accueil avec menu, boutons, etc.

    Et là hop miracle : quand tu dis à NetBeans que tu veux faire un JFrame, il te place automatiquement la méthode main dans la classe.

    Nous savons bien que tu es en train de vivre un douloureux moment abomifreux causé par ce changement de langage de programmation.
    Mais une fois que tu auras accepté de mettre ta méthode main dans une classe cela ira mieux ; on te le promet
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Merci pour votre humour, ça détend la rate (surtout après qu'elle soit passée au court bouillon ...)

    Bon, je vais mijoter toutes vos suggestions et je reviendrais vous dire que ça a fonctionné !

    Merci

    PS : mortel, c'est bientôt l'anniversaire de mes 5 ans d'inscription à ce site
    OS : LinuxMint 20

  16. #16
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Citation Envoyé par francky74 Voir le message
    PS : mortel, c'est bientôt l'anniversaire de mes 5 ans d'inscription à ce site
    Hum... J'aurais dit 6 ans x)
    F*ck it ! Do it !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Intégrer une classe main jfreechart dans le jpanel1 netbeans
    Par ririsuperstar dans le forum Composants
    Réponses: 0
    Dernier message: 09/04/2013, 17h11
  2. PaintBox créer d'une classe extérieure
    Par kickoune dans le forum Langage
    Réponses: 10
    Dernier message: 10/02/2009, 06h53
  3. Réponses: 7
    Dernier message: 29/12/2007, 00h08
  4. est il possible de créer dynamiquement une class ???
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2005, 17h22
  5. [MFC] Créer dynamiquement une classe
    Par vanitom dans le forum MFC
    Réponses: 9
    Dernier message: 11/12/2004, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo