Foro de elhacker.net

Programación => Java => Mensaje iniciado por: klaine en 28 Enero 2011, 00:09 am



Título: [JARs] ¿Que hace un IDE cuando agrega una librería?
Publicado por: klaine en 28 Enero 2011, 00:09 am
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 (http://www.javazoom.net/jlgui/sources.html) 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
  1. import java.io.File;
  2. import java.util.Map;
  3. import java.io.File.*;
  4.  
  5. import javax.swing.*;
  6. import java.awt.*;
  7. import java.awt.event.*;
  8.  
  9. import javazoom.jlgui.basicplayer.BasicController;
  10. import javazoom.jlgui.basicplayer.BasicPlayer;
  11. import javazoom.jlgui.basicplayer.BasicPlayerEvent;
  12. import javazoom.jlgui.basicplayer.BasicPlayerException;
  13. import javazoom.jlgui.basicplayer.BasicPlayerListener;
  14.  
  15. public class rep extends JFrame implements BasicPlayerListener, ActionListener{
  16.  
  17.    private JButton b1, b2, b3, b4, b5, b6, b7, b8,b9, b10;
  18.    private JLabel l1, l2, l3, l4, l5, l6, l7, l8, l9, l10;
  19.    private JFileChooser sel;
  20.  
  21.    public rep(){
  22.  
  23.        setSize(700, 500);
  24.        setLocation(200, 50);
  25.        setTitle("title");
  26.  
  27.        Container panel = getContentPane();
  28.        panel.setLayout(new GridBagLayout());
  29.        panel.setBackground(Color.black);
  30.  
  31.  
  32.        b1 = new JButton("Abrir...>>");
  33.        l1 = new JLabel("<html><H1><FONT COLOR=GREEN>Titulo por defecto</FONT><H1>");
  34.  
  35.        GridBagConstraints size1 = new GridBagConstraints();
  36.  
  37.        size1.gridx = 0;
  38.        size1.gridy = 0;
  39.        size1.gridheight = 1;
  40.        size1.gridwidth = 1;
  41.        size1.weightx = 0.0;
  42.        size1.weighty = 0.0;
  43.        size1.fill = size1.NONE;
  44.        size1.anchor = size1.CENTER;
  45.  
  46.        panel.add(l1, size1);
  47.  
  48.        GridBagConstraints size2 = new GridBagConstraints();
  49.  
  50.        size2.gridx = 0;
  51.        size2.gridy = 1;
  52.        size2.gridheight = 1;
  53.        size2.gridwidth = 1;
  54.        size2.weightx = 0.0;
  55.        size2.weighty = 0.0;
  56.        size2.fill = size1.NONE;
  57.        size2.anchor = size1.CENTER;
  58.  
  59.        panel.add(b1, size2);
  60.        b1.addActionListener(this);
  61.  
  62.  
  63.  
  64.  
  65.  
  66.        setVisible(true);
  67.        setDefaultCloseOperation(EXIT_ON_CLOSE);
  68.  
  69.    }
  70.  
  71. public static void main(String[] args){
  72.  
  73.    new rep();
  74.  
  75. }
  76.  
  77.  
  78. public void actionPerformed(ActionEvent click){
  79.  
  80.    if (click.getSource() instanceof JFileChooser){
  81.  
  82.        // para el showopen
  83.  
  84.        JOptionPane.showMessageDialog(null, "funka");
  85.  
  86.    }
  87.  
  88.    if (click.getSource() instanceof JButton){
  89.  
  90.        // para los botones
  91.  
  92.        JButton b0 = (JButton) click.getSource();
  93.  
  94.        JRootPane panel0 = b0.getRootPane();
  95.  
  96.        JFrame frame0 = (JFrame) panel0.getParent();
  97.  
  98.        String prompt0 = b0.getText();
  99.  
  100.        if (prompt0.equals("Abrir...>>")){
  101.  
  102.            abrir();
  103.  
  104.        }
  105.  
  106.    }
  107.  
  108. }
  109.  
  110. public void abrir(){
  111.  
  112.        sel = new JFileChooser();
  113.        sel.addActionListener(this);
  114.  
  115.        sel.setCurrentDirectory(new File(System.getProperty("user.dir")));
  116.  
  117.        sel.showOpenDialog(null);
  118.  
  119. }
  120.  
  121. public void setController(BasicController ctrl){
  122.  
  123. }
  124.  
  125. public void stateUpdated(BasicPlayerEvent chg){
  126.  
  127. }
  128.  
  129. public void progress(int Vint, long Vlong, byte[] Vbyte, Map Vmap){
  130.  
  131. }
  132.  
  133. public void opened(Object Vob, Map Vmap2){
  134.  
  135. }
  136.  
  137.  
  138.  
  139. }
  140.  

De antemano gracias por sus respuests  :D

Saludos  ;)


Título: Re: [JARs] ¿Que hace un IDE cuando agrega una librería?
Publicado por: Debci en 30 Enero 2011, 10:45 am
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


Título: Re: [JARs] ¿Que hace un IDE cuando agrega una librería?
Publicado por: klaine en 2 Febrero 2011, 21:46 pm
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!  ;)


Título: Re: [JARs] ¿Que hace un IDE cuando agrega una librería?
Publicado por: sapito169 en 4 Febrero 2011, 09:12 am

 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


Título: Re: [JARs] ¿Que hace un IDE cuando agrega una librería?
Publicado por: sapito169 en 4 Febrero 2011, 19:38 pm
a no tienes la variable classpath creada tienes que crearla
http://onsoftware.softonic.com/variables-de-entorno-en-microsoft-windows