[JARs] ¿Que hace un IDE cuando agrega una librería?

Iniciado por klaine, 28 Enero 2011, 00:09 AM

0 Miembros y 1 Visitante están viendo este tema.

klaine

Buenas, tengo el siguiente problema;

Con NetBeans IDE 6.8 en un Windows XP, mi aplicacion corría bien, descargué un conjunto de librerías desde esta pagina creé una librería en NetBeans de la forma regular (sry ahora no recuerdo cual era, pero lo hacía con el conector MYSQL y funcionaba), el caso es que dejé mi código fuente hasta cierto punto, pero ahora estoi en un PC que no tiene este IDE, es un Windows XP también, opté por realizar lo siguiente;

Tomé todas las librerías y las copié en el siguiente directorio;

(JDK)\jre\lib\ext\(...)

Según dicen que me las debería tomar, ok, haciendo esto el archivo rep.java compila y queda como un .class, pero al ejecutarlo me lanza la siguiente excepcion;

C:\Documents and Settings\usolibre\Escritorio>java rep>asds.txt
Exception in thread "main" java.lang.NoClassDefFoundError: javazoom/jlgui/basicp
layer/BasicPlayerListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javazoom.jlgui.basicplayer.BasicPla
yerListener
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 12 more
Could not find the main class: rep.  Program will exit.

C:\Documents and Settings\usolibre\Escritorio>

Entonces mi duda es, ¿algo me falta a mi hacer que el netbeans hace o mi programa tiene problemas? dejo lo poko y nada que tengo hecho hasta ahora;

Código (java) [Seleccionar]

import java.io.File;
import java.util.Map;
import java.io.File.*;

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

import javazoom.jlgui.basicplayer.BasicController;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerEvent;
import javazoom.jlgui.basicplayer.BasicPlayerException;
import javazoom.jlgui.basicplayer.BasicPlayerListener;

public class rep extends JFrame implements BasicPlayerListener, ActionListener{

    private JButton b1, b2, b3, b4, b5, b6, b7, b8,b9, b10;
    private JLabel l1, l2, l3, l4, l5, l6, l7, l8, l9, l10;
    private JFileChooser sel;

    public rep(){

        setSize(700, 500);
        setLocation(200, 50);
        setTitle("title");

        Container panel = getContentPane();
        panel.setLayout(new GridBagLayout());
        panel.setBackground(Color.black);


        b1 = new JButton("Abrir...>>");
        l1 = new JLabel("<html><H1><FONT COLOR=GREEN>Titulo por defecto</FONT><H1>");

        GridBagConstraints size1 = new GridBagConstraints();

        size1.gridx = 0;
        size1.gridy = 0;
        size1.gridheight = 1;
        size1.gridwidth = 1;
        size1.weightx = 0.0;
        size1.weighty = 0.0;
        size1.fill = size1.NONE;
        size1.anchor = size1.CENTER;

        panel.add(l1, size1);

        GridBagConstraints size2 = new GridBagConstraints();

        size2.gridx = 0;
        size2.gridy = 1;
        size2.gridheight = 1;
        size2.gridwidth = 1;
        size2.weightx = 0.0;
        size2.weighty = 0.0;
        size2.fill = size1.NONE;
        size2.anchor = size1.CENTER;

        panel.add(b1, size2);
        b1.addActionListener(this);



       

        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       
    }

public static void main(String[] args){

    new rep();

}


public void actionPerformed(ActionEvent click){

    if (click.getSource() instanceof JFileChooser){

        // para el showopen

        JOptionPane.showMessageDialog(null, "funka");

    }

    if (click.getSource() instanceof JButton){

        // para los botones

        JButton b0 = (JButton) click.getSource();

        JRootPane panel0 = b0.getRootPane();

        JFrame frame0 = (JFrame) panel0.getParent();

        String prompt0 = b0.getText();

        if (prompt0.equals("Abrir...>>")){

            abrir();
           
        }

    }

}

public void abrir(){
       
        sel = new JFileChooser();
        sel.addActionListener(this);

        sel.setCurrentDirectory(new File(System.getProperty("user.dir")));

        sel.showOpenDialog(null);

}

public void setController(BasicController ctrl){

}

public void stateUpdated(BasicPlayerEvent chg){

}

public void progress(int Vint, long Vlong, byte[] Vbyte, Map Vmap){

}

public void opened(Object Vob, Map Vmap2){

}



}


De antemano gracias por sus respuests  :D

Saludos  ;)

Debci

Deberias acceder al panel de propiedades de tu proyecto actual y selecionar las librerias que vas a usar en ese proyecto, en la sección correspondiente (Libraries o Librerias), haciendo click en añadir Jar o Carpeta para añadir cualquier libreria.
Lo que hace el IDE es generar un classpath temporal donde almacena las librerias de ese proyecto o las lee del classpath original.

Saludos

klaine

Gracias por responder, so, ¿es posible crear un classpath temporal?, he visto hablar de esta variable, pero cuando hago echo %classpath% no me dice mucho (de hecho me muestra "%classpath%"), ¿como puedo hacerlo? de antemano gracias.

Saludos!  ;)

sapito169


Trabaja como siempre

Luego desde la línea de comandos primero has esto

set classpath="D:\ruta del jar\el jar.jar";%classpath%

y después compila como siempre