Java : erreur execution Linux

Fermé
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 - 5 mai 2011 à 18:42
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 - 6 mai 2011 à 18:40
Bonjour,

Nous avons programmé, 2 de mes camarades et moi-même, un jeu de plateau en langage Java sous Windows Vista dans le cadre d'un projet de POO, et l'exécution se lance parfaitement.
(exemple d'exécution : https://www.youtube.com/user/ymaq117#p/a/u/0/0zaAOMizJRc )

Le problème survient lors d'une exécution sous Linux.

J'ai déjà installé les fichiers jdk-6u25-linux-i586.bin et jre-6u25-linux-i586.bin dans le dossier principal (Dossier personnel).
Puis j'ouvre une console pour compiler mon projet (javac *.java), juste des Warnings en guise d'erreur... (à cause d'accents dans les commentaires notamment).
Puis j'execute ma classe principale (java Programme).

En résulte 2 erreurs, toutes deux liées à l'affichage de la fenêtre de jeu...

Je ne pense pas que mon problème vienne de noter code, étant donné qu'une compilation et exécution fonctionnent parfaitement sous Windows (comme l'atteste la vidéo...).
Et puis un programme java n'est pas censé fonctionner quel que soit le système d'exploitation qui l'utilise ?... =/

Une aide serait la bienvenue ! ^^


Merci d'avance.

Ymaq.

A voir également:

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
5 mai 2011 à 20:13
Normalement, il n'y a même pas besoin de recompiler sous Linux, tu peux compiler sous Windows, copier-coller tes fichiers .class ou .jar sous Linux et les lancer directement comme ça.

Dans un premier temps je pencherais pour une incompatibilité des versions même si tu as installé les bonnes jdk, peut-être que le PATH qui défini javac ne correspond pas à la jdk que tu as installé mais à une version plus ancienne.

Pour t'aider il nous faudrait l'intitulé des deux erreurs obtenues, et éventuellement le code source associé.
1
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 1
6 mai 2011 à 00:36
Alors, j'ai recréé le problème en codant 3 classes plus petites, pour ne pas lire des lignes et des lignes de code ^^

En gros, la classe Main crée - ou plutôt doit créer - une fenetre avec la classe "FenetreConfig", qui contient un bouton validation.
Ce bouton, quand on clique dessus, doit fermer la fenetre FenetreConfig, créer une nouvelle fenetre "TestFenetre", et l'afficher.


--code Main.java--

import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;

public class Main {

 

        public static void main(String[] args){

		ConfigFenetre fen2 = new ConfigFenetre();    

        }

}



--code ConfigFenetre.java--

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.AbstractButton;

import javax.swing.ButtonGroup;

import javax.swing.GroupLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.BoxLayout;

import javax.swing.JButton;

 

public class ConfigFenetre extends JFrame implements ActionListener {

    

	        JPanel container1 = new JPanel();

		private JButton validation;

//constructeur	

        public ConfigFenetre(){

        

	        this.setTitle("Labyrinthe - settings");

	        this.setSize(270, 220);

		this.setResizable(false);

        	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        	this.setLocationRelativeTo(null);

		this.setBackground(new Color(0,0,0,255));

		

		validation = new JButton("Let's started !");

		validation.addActionListener(this);

		validation.setVisible(true);

	// création des différents "parties" de notre fenetre de configuration

        	container1.setBackground(Color.black);

        	container1.setLayout(new BorderLayout());

// ajout des différents boutons et labels..	

		JPanel top3 = new JPanel(); 

		top3.add(validation);

	// ajout aux différents "blocs" les différentes zones

		container1.add(top3,BorderLayout.SOUTH);

		setContentPane(container1);

		this.setVisible(true);            

	}        

	public void actionPerformed(ActionEvent e) {

		if((JButton)e.getSource()==validation) {

			new TestFenetre().setVisible(true);

			this.setVisible(false);

		}

	}  

}




--code TestFenetre.java--

import javax.swing.*;

import java.awt.*;
import javax.swing.JFrame;



public class TestFenetre extends JFrame {

	public TestFenetre() {

		this.setTitle("ma nouvelle fenetre !!!");

		this.setSize(500,300);

		this.setBackground(new Color(0,120,120,155));

	}

}



Voilà pour les codes...



Maintenant les erreurs.

Lors de la compilation, juste des warnings sur des lignes de commentaires, à cause d'accents...

Mais lors de l'exécution, ça me retourne ces différentes erreurs :

Exception in thread "main" java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
at java.awt.Window.<init>(Window.java:437)
at java.awt.Frame.<init>(Frame.java:419)
at java.awt.Frame.<init>(Frame.java:384)
at javax.swing.JFrame.<init>(JFrame.java:174)
at ConfigFenetre.<init>(ConfigFenetre.java:25)
at Main.main(Main.java:8)

(J'ai l'impression que ces erreurs concerne l'affichage de ma fenêtre java... enfin, la création d'une fenetre java en général... ?)

Merci.

Ymaq
0
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 1
6 mai 2011 à 00:38
Je tiens à préciser que l'erreur ne vient en aucune façon du code :
l'exécution après compilation de ces classes java sous Windows fonctionne parfaitement...
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 mai 2011 à 01:18
J'ai testé le code, je l'ai compilé sous Windows 7, copié-collé les .class sous Ubuntu 10.04, et lancé la classe Main... aucun problème à l'exécution !

Je t'invite soit à faire comme moi (compiler sous Windows et utiliser les fichiers sous Linux) soit à vérifier que tu as bien les même versions de javac sous Windows et Linux (javac -version)
0
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 1
6 mai 2011 à 12:42
D'accord, je vais essayer.

J'ai pour ma part une version plus avancée de javac sous Ubuntu (1.6.0_24) que sous Windows (1.6.0_22), et je trouve étrange que le programme s'exécute sous Windows et non sous Ubuntu...
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 mai 2011 à 12:55
En fait ce n'est pas vraiment un problème d'exécution mais de compilation.
L'exécution plante sous Ubuntu parce que c'est une autre compilation or à mon avis c'est cette compilation qui diffère...

Remarque : compiler sous Windows n'optimisera pas l'exécution sous Windows et idem pour Ubuntu, donc une seule compilation correcte (Windows en l'occurence) devrait suffire pour distribuer ton programme sur tous les systèmes.
0
Ymaq Messages postés 45 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 22 février 2013 1
6 mai 2011 à 13:15
Ok.

Mais je voudrais savoir : un fichier .java compilé avec une certain version de javac n'est pas censée pouvoir se compiler comme il faut avec une version de javac plus avancée ?
0