Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lancement application

Sujet résolu
    27 janvier 2015 à 18:41:44

    Bonsoir tout le monde,

    Ca fait pas mal de temps que je suis sur un problème avec mon programme et je n'arrive pas à le faire fonctionner. Enfin, le faire fonctionner est un bien grand mot. Sur mon ordi fix, il fonctionne sans soucis mais sur mon ordi portable, rien ne marche ...

    Je lance le jeu mais rien ne se passe, le processus se lance et se ferme quelque seconde après. Je n'ai aucune erreur. Sur mon ordi fix, je lance et l'application démarre sans problème et elle fonctionne correctement ...

    Voici ce que j'ai essayé sachant que j'utilise MAVEN pour mon projet:

    - Compiler sous Windows avec Maven
    - Changer le nombre de thread pour la compilation
    - Ré-installer Windows 7
    - Désactiver l'anti virus et tout le bordel
    - Compatibilité et administrateur 

    J'utilise un fxml pour créer une sorte de "lanceur". J'ai un bouton connexion où je me connecte (le problème ne peut pas venir de là ...). Voici ma méthode:

    public void onPlayClick(final ActionEvent event) {
            if (!loggedIn) {
                return;
            }
            
            final String lang = langCombo.getValue().toLowerCase();
            final String password = passwordTextField.getText();
            final String login = loginTextField.getText();
    
            final String dir = "Chemin de mon dossier";
            final File baseFile = new File(dir+"Launcher1.exe");
            final File launcherFile = new File(dir+"Launcher2.exe");
            if (launcherFile.exists()) {
               launcherFile.delete();
            }
    
            try {
                FileUtils.copyFile(baseFile, launcherFile, false);
                final RandomAccessFile raf = new RandomAccessFile(launcherFile, "rw");
               raf.seek(5138868);
    
    
                String serverUrl = "http://"+LoginConfig.LOGIN_URL+"/servers."+lang;
                while (serverUrl.length() < 59) {
                    serverUrl += '\0';
                }
                raf.write(serverUrl.getBytes());
                raf.close();
            }
            catch (final IOException e) {
                e.printStackTrace();
            }
          
            
            final List<String> commands = new FastList<>();
            commands.add(launcherFile.getAbsolutePath());
            commands.add("1");
            commands.add(password);
            commands.add("0");
            commands.add("1");
            commands.add(login);
            commands.add(lang);
            
            final ProcessBuilder builder = new ProcessBuilder(commands);
            builder.directory(new File(dir)); 
    
            try {
                builder.start(); 
                launcherFile.deleteOnExit(); 
            }
            catch (final IOException e) {
                e.printStackTrace();
            }

    En gros, je créé un fichier à partir d'un autre et j'y place l'ip: 127.0.0.1
    Ensuite, je lance l'application.

    Je n'arrive pas du tout à savoir où ce problème pourrait t-il venir. Dernière chose, j'utilise nanohttp pour le serveur et XAMPP pour MySQL. J'utilise aussi Gson de Google comme lib.

    Si quelqu'un a une idée, je suis preneur !

    Merci à vous :)

    (N'oubliez pas que tout fonctionne sur mon ordi fix) 

    -
    Edité par Mathie 27 janvier 2015 à 18:42:42

    • Partager sur Facebook
    • Partager sur Twitter
      28 janvier 2015 à 10:11:08

      Voilà ce qui arrive quand on ne met pas en oeuvre un système de log :(

      Lance l'application depuis la console. Avec un peu de chance, tu auras une stacktrace.

      • Partager sur Facebook
      • Partager sur Twitter
        28 janvier 2015 à 14:27:56

        Je lance déjà mon application en console.

        le bat lance le fichier jar et cest via le jar que je lance le .exe. Je n'ai aucune erreur apparente...

        • Partager sur Facebook
        • Partager sur Twitter
          28 janvier 2015 à 15:16:57

          Pourrais-tu nous montrer ton main()?

          Mathie a écrit:

          (N'oubliez pas que tout fonctionne sur mon ordi fix) 

          Ca montre juste que tu n'es pas compatible multi-plateforme à cause de ta manière de coder.

          final String dir = "Chemin de mon dossier";

              final File baseFile = new File(dir+"Launcher1.exe");
              final File launcherFile = new File(dir+"Launcher2.exe");
          

          Tu ne mets pas de séparateur entre le nom du dossier et le nom du fichier?

          -
          Edité par max-om-93 28 janvier 2015 à 15:26:28

          • Partager sur Facebook
          • Partager sur Twitter
            28 janvier 2015 à 16:10:17

            Il est définie dans mon dir. Voici ce que j'ai réellement:

            final String dir = "D:\\Eclipse\\Appli\\";

            Il détecte bien les fichiers de ce dossier étant donné qu'il arrive à utiliser le Launcher1 pour créer le Launcher2.

            Oui ... Et en plus je ne suis que débutant en JAVA. Cette méthode n'est que l'application d'un tutoriel que j'ai trouvé sur internet concernant la modification de fichiers.

            • Partager sur Facebook
            • Partager sur Twitter
              28 janvier 2015 à 16:14:15

              Si dans ton main(), tu ajoutes un System.out.println("UUUU") au tout début, est ce que tu vois ce texte dans la console au lancement de l'application?

              Je suppose que c'est encore pour Minecraft....

              • Partager sur Facebook
              • Partager sur Twitter
                28 janvier 2015 à 18:18:37

                Non pas pour minecraft pourquoi ? xD

                Oui, quand je lance l'application, le contenu de la fonction println s'affiche bien dans la console ^^

                • Partager sur Facebook
                • Partager sur Twitter
                  28 janvier 2015 à 18:54:18

                  les 3/4 des codes sous java son pour minecraft ici :')
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Un homme azerty en vaut deux.
                    28 janvier 2015 à 19:04:27

                    Ok, mais là c'est un émulateur ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 janvier 2015 à 19:07:04

                      Bon alors, tu rajoutes plein de System.out.println() pour voir ou à quel moment ça plante. Idem dans les catch -> System.out.println(ex.getMessage())

                      On y verra déjà plus clair.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 janvier 2015 à 0:33:15

                        Ok, donc j'ai fait plusieurs essaie avec des print.

                        Résultat: Le programme plante nul part, il exécute toutes les lignes sans problème et passe bien dans tous les try.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 janvier 2015 à 0:45:33

                          aurais tu fait un visuel ?

                          une JFrame par exemple ? si oui montre nous seulement la création de la JFrame :)

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Un homme azerty en vaut deux.
                            29 janvier 2015 à 18:36:00

                            Salut,

                            Voici un aperçu de la JFrame:

                            Je marque mes identifiants, si le serveur répond, il grise le bouton connexion et nous donne la possibilité de cliquer sur jouer. Je clique donc là dessus, j'ai le chargement au niveau de la souris, le processus est bien là puis paf ... plus rien.

                            Comme il a été dit plus haut, j'utilise un fichier fxml pour organiser tout, je peux le poster ici si vous le souhaitez

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 janvier 2015 à 18:48:32

                              quand je parlais de jframe je parlais du code :lol:
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Un homme azerty en vaut deux.
                                29 janvier 2015 à 19:01:59

                                Déjà le fxml, c'est important:

                                <?xml version="1.0" encoding="UTF-8"?>
                                
                                <?import javafx.scene.media.*?>
                                <?import javafx.scene.web.*?>
                                <?import javafx.geometry.*?>
                                <?import javafx.scene.effect.*?>
                                <?import javafx.scene.text.*?>
                                <?import javafx.scene.control.*?>
                                <?import java.lang.*?>
                                <?import javafx.collections.*?>
                                <?import javafx.scene.layout.*?>
                                
                                <Pane prefHeight="514.0" prefWidth="875.0" stylesheets="@Launcher.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.test.launcher.presentation.controllers.LoginController">
                                    <children>
                                        <Button id="loginButton" fx:id="loginButton" layoutX="168.0" layoutY="257.0" mnemonicParsing="false" onAction="#onLoginClick" prefHeight="33.0" prefWidth="125.0" text="CONNECT" textFill="WHITE">
                                            <font>
                                                <Font name="Kristen ITC" size="12.0" />
                                            </font>
                                        </Button>
                                        <Button id="playButton" fx:id="playButton" layoutX="325.0" layoutY="413.0" mnemonicParsing="false" onAction="#onPlayClick" prefHeight="52.0" prefWidth="225.0" text="PLAY" textFill="WHITE">
                                            <font>
                                                <Font name="Kristen ITC" size="12.0" />
                                            </font>
                                        </Button>
                                        <ComboBox id="langCombo" fx:id="langCombo" layoutX="212.0" layoutY="83.0" prefHeight="25.0" prefWidth="125.0" visibleRowCount="2">
                                            <items>
                                                <FXCollections fx:factory="observableArrayList">
                                                    <String fx:value="FR" />
                                                    <String fx:value="EN" />
                                                </FXCollections>
                                            </items>
                                            <value>
                                                <String fx:value="EN" />
                                            </value>
                                        </ComboBox>
                                        <Label fx:id="langLabel" layoutX="70.0" layoutY="87.0" text="Lang" textFill="WHITE" />
                                        <Label fx:id="langLabel" layoutX="70.0" layoutY="139.0" text="Login" textFill="WHITE" />
                                        <Label fx:id="passwordLabel" layoutX="70.0" layoutY="199.0" text="Password" textFill="WHITE" />
                                        <MenuBar layoutX="5.0" layoutY="5.0">
                                            <menus>
                                                <Menu mnemonicParsing="false" text="File">
                                                    <items>
                                                        <MenuItem mnemonicParsing="false" text="Preferences" />
                                                        <MenuItem mnemonicParsing="false" onAction="#onCloseMenu" onMenuValidation="#onCloseMenu" text="Close" />
                                                    </items>
                                                </Menu>
                                            </menus>
                                        </MenuBar>
                                        <WebView fx:id="webView" blendMode="OVERLAY" layoutX="450.0" layoutY="27.0" opacity="0.2" prefHeight="305.0" prefWidth="410.0" />
                                        <TextField id="loginTextField" fx:id="loginTextField" layoutX="131.0" layoutY="135.0" pickOnBounds="false" prefHeight="25.0" prefWidth="211.0">
                                            <opaqueInsets>
                                                <Insets />
                                            </opaqueInsets>
                                        </TextField>
                                        <TextField id="passwordTextField" fx:id="passwordTextField" layoutX="131.0" layoutY="195.0" prefHeight="25.0" prefWidth="211.0" />
                                    </children>
                                </Pane>
                                

                                Et bien sûr, la class qui charge le tout:

                                package com.test.launcher.presentation;
                                
                                import javafx.application.Application;
                                import javafx.event.EventHandler;
                                import javafx.fxml.FXMLLoader;
                                import javafx.scene.Parent;
                                import javafx.scene.Scene;
                                import javafx.scene.input.MouseEvent;
                                import javafx.stage.Stage;
                                import javafx.stage.StageStyle;
                                
                                import com.test.launcher.presentation.controllers.LoginController;
                                
                                public class LauncherWindow extends Application {
                                
                                    private final FXMLLoader fxmlLoader;
                                    
                                    private double xOffset;
                                    private double yOffset;
                                    
                                    public LauncherWindow() {
                                        fxmlLoader = new FXMLLoader(getClass().getResource("/com/test/launcher/presentation/Launcher.fxml"));
                                    }
                                    
                                    @Override
                                    public void start(final Stage stage) throws Exception {
                                        final Parent root = (Parent) fxmlLoader.load();
                                        
                                        root.setOnMousePressed(new EventHandler<MouseEvent>() {
                                            @Override
                                            public void handle(final MouseEvent event) {
                                                xOffset = stage.getX() - event.getScreenX();
                                                yOffset = stage.getY() - event.getScreenY();
                                            }
                                        });
                                        root.setOnMouseDragged(new EventHandler<MouseEvent>() {
                                            @Override
                                            public void handle(final MouseEvent event) {
                                                stage.setX(event.getScreenX() + xOffset);
                                                stage.setY(event.getScreenY() + yOffset);
                                            }
                                        });
                                        
                                        getController().loadPreferences();
                                        getController().loadUi();
                                        
                                        stage.initStyle(StageStyle.UNDECORATED);
                                        stage.setTitle("Tera launcher");
                                        stage.setScene(new Scene(root));
                                        stage.show();
                                    }
                                
                                    public LoginController getController() {
                                        return (LoginController) fxmlLoader.getController();
                                    }
                                }
                                




                                -
                                Edité par Mathie 29 janvier 2015 à 19:02:33

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 janvier 2015 à 19:06:13

                                  au passage le launcher et sympa

                                  -
                                  Edité par GuillaumeBo1 29 janvier 2015 à 19:10:22

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Un homme azerty en vaut deux.
                                    29 janvier 2015 à 19:11:24

                                    Ouep, je me connecte via une BDD avec le bouton login.

                                    Etant donné que le launcher écrit dans le fichier avec ces données, peut être que ça viendrait de là ?

                                    Je sais pas ...

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 janvier 2015 à 19:21:00

                                      mes des Syso dans tes class avec dedans "NUMERO_UNIQUE - NOM_DE_CLASSE" et regarde où ça pete
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Un homme azerty en vaut deux.
                                        29 janvier 2015 à 19:23:53

                                        Des Syso c'est des printf ?

                                        Désolé, je connais pas trop ce langage x)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          29 janvier 2015 à 19:24:58

                                          oui tu tape syso et tu fait CTRL+ESPACE ;)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Un homme azerty en vaut deux.
                                            29 janvier 2015 à 21:05:28

                                            Bon, après plusieurs test, aucun résultat.

                                            Le programme passe partout sans exceptions sans planter

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 janvier 2015 à 14:51:54

                                              Problème résolu

                                              le problème venait du fait que j'avais pas la même structure au niveau de la base de donnée...

                                              merci a vous tous ! Je vais pouvoir avancer

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Problème lancement application

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown