Compatibilité MSVM et JAVA

EricW123 Messages postés 1 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 8 novembre 2004 - 8 nov. 2004 à 17:39
cs_fxlamare Messages postés 1 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 14 décembre 2008 - 9 août 2005 à 17:49
Bonjour,

j'ai développé un applet java à partir de la SDK 1.5.0.
C'est un client TCP/IP qui affiche des données que l'on lui envoie. L'application fonctionne bien avec le JRE de Sun mais avec MSVM j'ai une erreur du type NoClassDefFoundError alors que mes fichiers .class sont au bon endroit.
La variable CLASSPATH est à priori uniquement utilisée par le JRE de SUN et non par microsoft.
Cela n'est pas forcément grave si cela ne fonctionne pas avec le VM de microsoft mais il faut que je puisse au moins afficher un message à la place de mon applet pour prévenir l'utilisateur d'installer le JRE.

Ci-joint mon applet et son appel dans la page HTML. Pour info, j'ai aussi essayer de simplifier mon applet mais cela ne marche pas non plus.

Merci d'avance pour votre aide.

////////////////////////////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;

public class T200trace extends Applet {
private int port;
private Socket socket = null;
private int ERROR = 1;
private String TextFreeze;
private String TextRun;
private BufferedReader input;
private Timer timer1;
private TextArea fTextArea;

public void start() {
String PortString;
String server;

ActionListener TimerThread;
int delay=50; //Tempo de scrutation
final Button FreezeButton;
Panel TopPanel = new Panel();

// Récuparation des paramètres
server = getParameter("ServerAddr");
if (server == null)
{
System.out.println ("Server Adresse = 172.16.0.5 (default)");
server = "172.16.0.5";
}
PortString = getParameter ("Port");
if (PortString == null)
{
System.out.println ("Port = 1168 (default)");
port = 1168;
}
else
port = Integer.parseInt(PortString);

TextFreeze = getParameter("FreezeText");
if (TextFreeze == null)
{
TextFreeze = "Freeze";
}
TextRun = getParameter("RunText");
if (TextRun == null)
{
TextRun = "Run";
}

// Création du socket de connection
try {
socket = new Socket (server, port);
System.out.println ("Connecté au serveur "+socket.getInetAddress()+":"+socket.getPort());
}
catch (UnknownHostException e){
System.out.println (e);
System.exit (ERROR);
}
catch (IOException e) {
System.out.println (e);
System.exit (ERROR);
}

// Création du buffer de réception
try {
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
catch (IOException e){
System.out.println (e);
System.exit (ERROR);
}

// Ajout des composants au conteneur
fTextArea = new TextArea("",5000,5000,TextArea.SCROLLBARS_VERTICAL_ONLY);
setLayout(new BorderLayout());
TopPanel.setLayout(new BorderLayout());
fTextArea.setFont(new Font("Serif", Font.BOLD, 12));
fTextArea.setBackground (new Color(0x76,0x97,0xA7));
fTextArea.setForeground(new Color(255,255,255));
fTextArea.setEditable (false);
add(fTextArea, BorderLayout.CENTER);
FreezeButton = new Button (TextFreeze);
FreezeButton.setSize(200,15);
TopPanel.add(FreezeButton, BorderLayout.EAST);
TopPanel.setBackground(new Color(0xEC, 0x87, 0x10));
add (TopPanel, BorderLayout.NORTH);

// Handle du timer
TimerThread = new ActionListener()
{
public void actionPerformed (ActionEvent e1)
{

try{
String message = input.readLine();
if (message != null)
{
fTextArea.append(message);
fTextArea.append("\r\n");

}

}
catch (IOException e){
System.out.println (e);
System.exit (ERROR);
}

}
};
// Instanciation du timer
timer1 = new Timer(delay, TimerThread);
timer1.start();
fTextArea.requestFocus();

// Gestion du bouton Freeze
FreezeButton.addActionListener (new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String text;
text=FreezeButton.getLabel();
if (text.compareTo(TextFreeze)==0)
{
FreezeButton.setLabel(TextRun);
timer1.stop();
}
else if (text.compareTo(TextRun)==0)
{
FreezeButton.setLabel(TextFreeze);
timer1.start();
fTextArea.requestFocus();
}
}
});
}

public void stop() {
try {
timer1.stop();
input.close();
input = null;
socket.close();
socket = null;
System.out.println("Connection closed by client");
}
catch (IOException e){
System.out.println (e);
System.exit (ERROR);
}
}

public void paint (Graphics theGraphics)
{
fTextArea.repaint();

}

}
/////////////////////////////////////////////////////////////////////////////

You need a Java Virtual Machine from Sun Microsystem to view this page

///////////////////////////////////////////////////////////////////////////////

1 réponse

cs_fxlamare Messages postés 1 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 14 décembre 2008
9 août 2005 à 17:49
je débute dans JAVA.



Ce problème est peut être lié au fait que la MSJM ne supporte que le niveau de spécification 1.1 de JAVA.



J'ai déterminé cela en réalisant que seul un code compilé avec l'option :



"-target 1.1"



fonctionnait dans la MSJM.



En recompilant la classe avec cette option (depuis la ligne de commande
dans mon cas) ça marche (à moins d'utiliser des choses des versions
supérieures).
0
Rejoignez-nous