salut!
j'ai réalisé d'un coté une appli client/serveur utilisant le protocole SSL qui marche.
d'un autre coté une appli utilisant une comm RS232 avec javax.comm qui marche aussi.
J'ai reuni les deux dans un projet, qui fonctionne quand je le lance avec NetBean(6.0.1)
mais lorsque j'essaye de lancer directement le .jar, patatrac, je me retrouve avec :
Exception in thread "main" java.lang.NoClassDefFounderror: javax/comm/PortInUseException
at serveurlaser.Main.main<Main.java:19>
Caused by: java.lang.ClassNotFoundException: javax.comm.PortInUseException
at java.net.URLClassLoader$1.run<Unknow Source>
at java.security.AccessController.doPrivileged<Native Method>
at java.net.URLClassLoader.findClass<Unknow Source>
at java.lang.ClassLoader.loadClass<Unknow Source>
at sun.misc.Launcher$AppClassLoader.loadClass<Unknow Source>
at java.lang.ClassLoader.loadClass<Unknow Source>
at java.lang.ClassLoader.loadClassInternal<Unknow Source>
... 1 more
Pourquoi donc?
Voici le code source :
package serveurlaser;
import javax.comm.*;
import java.util.*;
import java.lang.*;
import java.security.*;
import java.awt.*;
import java.io.*;
import javax.swing.*;
import javax.net.ssl.*;
import javax.net.*;
import java.net.Socket;
import java.net.ServerSocket;
/**
*
* @author pierre
*/
public class FServeur extends javax.swing.JFrame {
public static String carte;
private SerialPort serialPort;
CommPortIdentifier portId;
SSLServerSocket serverSocket = null;
SSLSocket clientSocket = null;
BufferedReader isClient = null;
PrintWriter osClient = null;
int port = 9999, i = 0;
String msg_String = null;
int msg_hash = 0;
int Clientconnected = 0;
String[] Id = {"yassine bouslimani"};
String[] Pass = {"bouslimani"};
String[] CarteMgt = {"T1:%1 0106763 2?.A5"};
/** Creates new form FServeur */
public FServeur()
{
initComponents();
//listePortsDispo();
}
public void listePortsDispo()
{
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
if (portList==null)
{
AreaEvent.append("Aucun port COM" );
ComPort.addItem("No COM");
return;
}
AreaEvent.append("recherche ports COM...\n" );
while (portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
//System.out.println("* "+portId.getName());
try
{
//serialPort
serialPort = (SerialPort) portId.open("ModeEvenement", 2000);
ComPort.addItem(portId.getName());
}
catch (PortInUseException e) {}
} //fin while
serialPort.close();
AreaEvent.append("Choisir port COM\n");
} //fin de la methode listePortsDispo()
// Création du serveur
public void creerServeur()
{
port = Integer.parseInt(TxtPort.getText());
try {
System.out.print(".");
String keystore = "serverkeys";
char keystorepass[] = "serverpwd".toCharArray();
char keypassword[] = "serverpwd".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(keystore), keystorepass);
KeyManagerFactory kmf =
KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, keypassword);
SSLContext sslcontext =
SSLContext.getInstance("SSLv3");
sslcontext.init(kmf.getKeyManagers(), null, null);
ServerSocketFactory ssf =
sslcontext.getServerSocketFactory();
serverSocket = (SSLServerSocket) ssf.createServerSocket(port);
AreaEvent.append("Lancé.\n\n");
}
catch (IOException e) {
AreaEvent.append(
"...failed.\nProbleme a la creation du SSLServerSocket : " + e);
System.exit(1);
}
catch (Exception e) {
AreaEvent.append(
"...failed.\nProbleme a la creation du SSLServerSocket : " + e);
System.exit(1);
}
}
// Attente de connexion d'un client
public void attendreConnexion()
{
try {
clientSocket = (SSLSocket) serverSocket.accept();
AreaEvent.append("Client accepté.");
Clientconnected = 1;
String[] supported = clientSocket.getSupportedCipherSuites();
AreaEvent.append("cipher suites autorisé : "+ supported);
clientSocket.setEnabledCipherSuites(supported);
}
catch (IOException e) {
AreaEvent.append(
"Impossible d'echanger avec BufferedReader et PrintWriter pour le clientSocket : " +
e);
System.exit(1);
}
}
// Récupération des flux d'entrée de sortie
public void obtenirFlux()
{
try {
isClient = new BufferedReader(new InputStreamReader(clientSocket.
getInputStream()));
osClient = new PrintWriter(clientSocket.getOutputStream());
}
catch (IOException e) {
AreaEvent.append("Impossible d'exanger les flux : " + e);
}
}
//Initialisation de la Frame
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
BtServeur = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
AreaClients = new javax.swing.JTextArea();
jPanel4 = new javax.swing.JPanel();
TxtIdentifiants = new javax.swing.JTextField();
TxtPassword = new javax.swing.JPasswordField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
BtIdentification = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
TxtPort = new javax.swing.JTextField();
ComPort = new javax.swing.JComboBox();
jLabel5 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
AreaComm = new javax.swing.JTextArea();
TxtComm = new javax.swing.JTextField();
BtEnvoi = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
AreaEvent = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Gestion du serveur", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12)));
BtServeur.setText("Démarrer Serveur");
BtServeur.setEnabled(false);
BtServeur.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtServeurActionPerformed(evt);
}
});
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Clients", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12)));
AreaClients.setColumns(20);
AreaClients.setRows(5);
jScrollPane3.setViewportView(AreaClients);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Connexion", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12)));
jLabel1.setText("Identifiants");
jLabel2.setText("Mot de passe");
BtIdentification.setText("Identification");
BtIdentification.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtIdentificationActionPerformed(evt);
}
});
jLabel3.setText("IP Serveur");
jLabel4.setText("Port d'écoute");
TxtPort.setText("9999");
jLabel5.setText("Port lecteur carte");
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(BtIdentification)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel4Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3))
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(ComPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(jLabel4)))
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(TxtPassword)
.addComponent(TxtIdentifiants, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(TxtPort, javax.swing.GroupLayout.DEFAULT_SIZE, 113, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel3)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(TxtIdentifiants, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ComPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(TxtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(TxtPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(BtIdentification)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(BtServeur, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
.addComponent(BtServeur)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Communication", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12)));
AreaComm.setColumns(20);
AreaComm.setRows(5);
jScrollPane1.setViewportView(AreaComm);
BtEnvoi.setText("Envoyer");
BtEnvoi.setEnabled(false);
BtEnvoi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtEnvoiActionPerformed(evt);
}
});
AreaEvent.setColumns(20);
AreaEvent.setRows(5);
jScrollPane2.setViewportView(AreaEvent);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(TxtComm, javax.swing.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
.addGap(8, 8, 8)
.addComponent(BtEnvoi, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(TxtComm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(BtEnvoi))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
pack();
}// </editor-fold>
private void BtServeurActionPerformed(java.awt.event.ActionEvent evt) {
BtServeur.setText("Arrêter Serveur");
//copierCertificat();
AreaEvent.append("Lancement du serveur...");
creerServeur();
AreaEvent.append("OK\n");
AreaEvent.append("Attente d'un client...\n");
attendreConnexion();
//AreaEvent.append(connexion.getInetAddress().getHostName() + " s'est connecté\n");
AreaEvent.append("Obtention des flux...");
obtenirFlux();
AreaEvent.append("OK\n");
// Lecture des messages
while (true) {
try {
msg_String = isClient.readLine();
AreaEvent.append("Message du client client : " + msg_String);
}
catch (IOException e) {
AreaEvent.append("Impossible d'accerder au I/O: " + e);
System.exit(1);
}
if (msg_String.trim().equals("/bye")) {
Clientconnected = 0;
try
{
clientSocket.close();
serverSocket.close();
System.exit(0);
}catch (IOException e){}
}
if (Clientconnected == 1) {
try {
AreaEvent.append("\nComputing...");
msg_hash = msg_String.hashCode();
System.out.print("done");
osClient.println(msg_hash);
osClient.flush();
AreaEvent.append("...and sent.\n");
}
catch (Exception e) {
System.out.println(e);
System.exit(1);
}
}
}
}
private void BtEnvoiActionPerformed(java.awt.event.ActionEvent evt) {
}
private void BtIdentificationActionPerformed(java.awt.event.ActionEvent evt) {
for (int i=0 ; i<Id.length ;i++)
{
String a = TxtIdentifiants.getText();
String b = new String (TxtPassword.getPassword());
if (TxtIdentifiants.getText().equals(Id[i]) && new String(TxtPassword.getPassword()).equals(Pass[i])/*.toString().equals(Pass[i])*/)
{
//AreaEvent.append("port ouvert, attente de lecture...\n");
//UpdateUI();
Serie.main(ComPort.getSelectedItem().toString());
if ( carte.equals(CarteMgt[i]) )
{
AreaEvent.append("Identification correcte\n");
BtServeur.setEnabled(true);
BtEnvoi.setEnabled(true);
}
else
{
AreaEvent.append("carte incorrecte\nVeuillez recommencer l'identification\n");
TxtIdentifiants.setText("");
TxtPassword.setText("");
}
}
else
{
AreaEvent.append("Identifiants incorrects\nVeuillez recommencer\n");
TxtIdentifiants.setText("");
TxtPassword.setText("");
}
}
}
/**
* @param args the command line arguments
*/
public static void main(/*String args[]*/) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FServeur().setVisible(true);
}
});
}
// Variables declaration - do not modify
public javax.swing.JTextArea AreaClients;
public javax.swing.JTextArea AreaComm;
public static javax.swing.JTextArea AreaEvent;
private javax.swing.JButton BtEnvoi;
private javax.swing.JButton BtIdentification;
private javax.swing.JButton BtServeur;
private javax.swing.JComboBox ComPort;
private javax.swing.JTextField TxtComm;
private javax.swing.JTextField TxtIdentifiants;
private javax.swing.JPasswordField TxtPassword;
private javax.swing.JTextField TxtPort;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
// End of variables declaration
}
la JVM ne trouve pas cette classe : javax/comm/PortInUseException vérifie peut être le chemin ou que cette classe apartient bien au même package que les autres
java.lang.NoClassDefFounderror:
× 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.