Como usar os packages

5 respostas
L

como usar os packages…pq olha so…se eu colocar assim funciona:

class cliente { public static void main(String args[]) { System.out.println("Erro"); } }

mais se eu colocar assim nao funciona:

package cliente;

class cliente
{
        public static void main(String args[])
        {
                System.out.println("Erro");
        }
}

e da esse erro:

Exception in thread "main" java.lang.NoClassDefFoundError: cliente (wrong name: tecloccliente/cliente)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

alguem me ensina sobre packages ai? Valeu!

5 Respostas

F

o arquivo tem q estar na pasta com o mesmo nome do package, e dai pra executar vc tem q ir uma pasta acima da q ta o pacote e digitar “java package.classe” ex:

suponha uma classe X no pacote pack, a pasta em q a classe X se encontra teria q ser a seguinte:

C:\programa\pack

pra executar entre a pasta C:\programa e digite:

java pack.X
L

tipo..eu entendi, consegui funcionar, ai eu tendei:

cliente.java
package ptecloc;

import javax.swing.*;

public class cliente
{
        public void casa()
        {
                JPanel novo = new JPanel();
        }
}
tecLOC.java
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import ptecloc.*;

public class tecLOC extends JFrame
{
//...
public void actionPerformed(ActionEvent e)
                {
                        if(e.getSource() == jmiCadastroClientes)
                        {
                                JInternalFrame jifCliente = new JInternalFrame("tecLOC "+versao+" - Clientes",false,true,false);
                                jifCliente.setIconifiable(true);
                                jifCliente.setBounds(20,20,250,500);
                                jifCliente.add(cliente.casa());
                                jifCliente.setVisible(true);
                                dtp.add(jifCliente);
                        }
//....
}
ai da esse erro:
tecLOC.java:285: cannot access cliente
bad class file: ./cliente.java
file does not contain class cliente
Please remove or make sure it appears in the correct subdirectory of the classpath.
                                jifCliente.add(cliente.casa());
                                               ^
1 error

alguem sabe pq?

Valeu ai!

M

tu esta compilando com javac -d . ? ele esta criando a pasta do pacote?

L

ta compilando certinho, tipo sem o cliente.casa() funciona so que com ele ta aquele erro…e mais uma coisa…nao eh jifcliente.add eh jifcliente.getContentPane().add(blabla) hehe

M

ahhh mas perai, o método casa() retorna um void, tudo bem q o método casa() instancia um novo Panel, mas ele retorna um void, então quando tu chama o add(), tu nao vai estar adicionando nada! o retorno é void! :roll:

Criado 3 de julho de 2004
Ultima resposta 4 de jul. de 2004
Respostas 5
Participantes 3