Hola compañeros.
Os escribo este post pq ando un poco desesperado.
Problema: tengo un applet de un chat en java que esta constantemente a traves de un timer leyendo de una base de datos los usuaris que estan activos en la tabla usuaris_chat, bien esto funciona perfecto en el APPLET VIEWER el problema viene al incrustarlo dentro del navegar que el applet carga pero no tiene comunicacion con la base de datos, es como si no detectara la libreria de mysql en jar, por lo que dice, aunque si que la tiene carga en el tag adecuado, nose si esque estoy haciendo algo mal !!
Adjunto mi codigo:
Clase java principal
Código JAVA:
Ver originalimport java.awt .*;
import java.awt.event .*;
import javax.swing.*;
import javax.swing.Timer;
/*
* ChatApplet.java
*
* Creat el 10/05/2011, a les 19:17:44
*
* @author franki
*/
public class ChatApplet
extends JApplet{
@Override
public void init() {
ActualitzaLlista al = new ActualitzaLlista();
try{
jLlistaUsuaris.setListData(al.listar());
System.
out.
println("ERROR al llistar"); }
}
});
temps.start();
try {
public void run() {
initComponents();
jTextArea.setEditable(false);
jTextArea.setText("Conectando con el servidor...");
}
});
ex.printStackTrace();
}
getContentPane
().
setBackground(new Color(236,
153,
50)); }
/** This method is called from within the init() method to
* initialize the form.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLlistaUsuaris
= new javax.
swing.
JList(); jBotoEnviar
= new javax.
swing.
JButton();
setBackground
(new java.
awt.
Color(236,
153,
50)); setCursor
(new java.
awt.
Cursor(java.
awt.
Cursor.
DEFAULT_CURSOR));
String[] strings
= { "Item 1",
"Item 2",
"Item 3",
"Item 4",
"Item 5" }; public int getSize() { return strings.length; }
public Object getElementAt
(int i
) { return strings
[i
]; } });
jScrollPane1.setViewportView(jLlistaUsuaris);
jTextEnviar.
setFont(new java.
awt.
Font("DejaVu Sans",
0,
16)); public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { jTextEnviarActionPerformed(evt);
}
});
jTextArea.setColumns(20);
jTextArea.setRows(5);
jScrollPane2.setViewportView(jTextArea);
jBotoEnviar.
setBackground(new java.
awt.
Color(250,
250,
119)); jBotoEnviar.setText("ENVIAR");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { jBotoEnviarActionPerformed(evt);
}
});
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()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(jTextEnviar, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
504,
Short.
MAX_VALUE) .
addComponent(jScrollPane2, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
504,
Short.
MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.
addComponent(jBotoEnviar, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE) .
addComponent(jScrollPane1, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
97,
Short.
MAX_VALUE)) .
addContainerGap(36,
Short.
MAX_VALUE)) );
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.
addComponent(jScrollPane2, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
403,
Short.
MAX_VALUE) .
addComponent(jScrollPane1, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
403,
Short.
MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextEnviar, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.
addComponent(jBotoEnviar, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
32,
Short.
MAX_VALUE)) .addGap(13, 13, 13))
);
}// </editor-fold>//GEN-END:initComponents
private void jTextEnviarActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_jTextEnviarActionPerformed // TODO add your handling code here:
}//GEN-LAST:event_jTextEnviarActionPerformed
private void jBotoEnviarActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_jBotoEnviarActionPerformed jTextArea.setText(jTextArea.getText()+"\n"+jTextEnviar.getText());
jTextEnviar.setText(null);
}//GEN-LAST:event_jBotoEnviarActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JButton jBotoEnviar
; private javax.
swing.
JList jLlistaUsuaris
; // End of variables declaration//GEN-END:variables
}
Clase que lee de la base de datos
Código JAVA:
Ver original/**
*
* @author franki
*/
import java.sql.*;
public class ActualitzaLlista {
public void llegirBD(){
for(int j=0;j<100;j++){
lista[j] = "";
}
try {
int i = 0;
//Busca el driver per al tipus de DBMS en questio
Class.forName("com.mysql.jdbc.Driver");
//Definint url de connexio amb la base de dades
//el nom de la BD és "mydb"
// Crear anunciat
ResultSet tabla
= st.
executeQuery("SELECT nick_chat FROM usuaris_chat where actiu = true"); while(tabla.next()){
System.
out.
println(tabla.
getString(1)); lista[i] = tabla.getString(1);
i++;
}
e.printStackTrace();
}
e.printStackTrace();
System.
out.
println(e.
getMessage() + e.
getErrorCode()); }
e.printStackTrace();
}
}
llegirBD();
return lista;
}
}
Codigo HTML que carga el applet
Código HTML:
Ver original<applet
code="ChatApplet.class"
ARCHIVE="mysql-connector-java-5.1.15-bin.jar;ActualitzaLlista.class"
width="730"
height="470"
>
</applet>
PD: Recuerdo que en el applet viewer funciona perfecto.
PD2: Desde la consola de errores de google chrome sale:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Salu2 y mil gracias por su tiempo