Marche dans Eclipse mais pas en dehors

Titre très vague car je débute.

voici le code en question :[code]package zeg;
import javax.swing.JFrame;

public final class Ezrvbg {

public static void main(String[] args) {
	JFrame fen = new JFrame ();
	fen.setTitle("taille");
	fen.setSize(300, 300);
	fen.setLocation(300,300);
	fen.setAlwaysOnTop(true);
	fen.setVisible(true);
	int x;
	while (true)
		{x = Clavier.lireInt();
		fen.setSize(300,x);
		}
}

}[/code]
le bouton ‘run’ d’Eclipse m’affiche la fenêtre “taille” que je peux redimensionner,
un lanceur sur le bureau java -jar /home/eric/Desktop/fenschboing.jarlaisse la fenêtre s’afficher une fraction de seconde seulement

Quand je commente le while, la fenêtre reste.
J’ai dans le package la classe Clavier.

Je sèche lamentablement, merci pour votre aide.

Je ne sais pas du tout pourquoi. Tu nous envoie le jar ?

La classe Clavier c’est vous qui l’avez écrite ?

voici le jar avec une autre extension car le jar n’est pas autorisé sur ce site.
La classe Clavier vient du DVD de Java de Delannoy. Elle marche bien dans un autre jar que je lance aussi du bureau.
fenschboing.txt (1.97 KB)

Chez moi ça fonctionne. :confused: Il ne t’indique pas une éventuelle érreur ?

La classe Clavier est inutile depuis 2004, tu peut la remplacer par la casse Scanner qui a l’avantage d’être standard. Voici un exemple (ce que j’ai fait hier pour voir un peu s’il y avait une option à ajouter) :

[code]package zeg;

import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.util.Scanner;

public final class Ezrvbg {
public static void main(String[] args) {
JFrame fen = new JFrame ();
fen.setTitle(“taille”);
fen.setSize(300, 300);
fen.setLocation(300,300);
fen.setAlwaysOnTop(true);
fen.setVisible(true);
fen.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

Scanner sc = new Scanner(System.in);
int x;
while (sc.hasNextInt()) {
  x = sc.nextInt();
  fen.setSize(300,x);
}
System.out.println("Fini");
System.exit(0);

}
}[/code]

J’ai recopié ton code : pas de changement :017
Ne devrais-je pas avoir une console qui s’ouvre ?
Où les messages d’erreurs vont-ils se mettre ?

Quand j’ouvre une console et que j’y entre java -jar /home/eric/Desktop/fenschboing.jar, ça marche.
Il faudrait que mon lanceur ouvre une console, non ?

Ok alors je comprends tout :slightly_smiling:
Comme tu le lance pas dans un terminal, Clavier reçois un EOF (fin de fichier) du coup ça ne peux pas marcher. ton eclipse est configuré pour le lancer dans un terminal ce qui empêche le problème.

Je ne comprends pas pourquoi j’ai un autre lanceur qui ouvre une fenêtre.

Demande lui de le lancer dans un terminal ou donne lui la commande :

Que ce soit ton clavier ou mon Scanner, ils lisent tout deux ce que tu tape sur l’entrée standard de l’application. Cette entrée standard est, dans la majorité des cas, rattachée à un shell. Ce qui te permet de taper au clavier ce que tu veux et que ce soit lu par ton programme. Cela peut aussi être lié à un autre programme, à un fichier ou à une socket réseau par exemple. Quand cette entrée standard est fermée, le programme qui tente de lire son entrée standard va lire une fin de fichier (c’est un caractère ASCII) et ne pourras donc plus rien y lire après ça.

Quand un programme est lancé sans terminal généralement son entrée standard est fermé (on ne sais pas où lire son entrée standard, en fait on ne sais même pas s’il en a besoin). Donc ton programme reçois immédiatement un fin de fichier et s’arrête parce que tu n’a pas géré l’exception qui est levée par ta classe Clavier.

Voila j’espère avoir était clair.

Super clair,
merci MisterFreez ! :smiley: