MarKteus 1 Denunciar post Postado Abril 29, 2012 Olá amigos Qual a diferença entre .Class e .Jar se é que existe? Como compilo uma classe Java no Eclipse? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Abril 29, 2012 Cara, eu creio que é a mesma coisa, algumas diferenças é que todo app em JAVA precisa ter uma classe principal, que é o public static void main(String[] args) e essa classe principal pode estender diversas outras classes e implementar varios outros métodos, uma classe tambem não é algo que você possa abrir e editar com o IDE ja um arquivo .jar é editável. Exemplo: public static void main(String[] args) extends JFrame implements ActionListener, TextListener, MouseListener {} Nesse caso é uma aplicação visual, você está estendendo sua main para a classe JFrame do java que é responsável pela construção de janelas e implementando diversos Listeners que serão responsáveis pelas ações que o usuário toma durante a execução do programa. Um outro exemplo mais comum é: Imagine que você tem uma outra classe, por exemplo a classe Pessoa e a classe Aluno, essas duas classes retornam valores para a classe principal Chamada TrataAlunoVisual: Classe Aluno: class Aluno extends Pessoa{ private String curso; private float media; private int faltas; Aluno(){ //método construtor curso=""; media=0.0f; faltas=0; } public void setCurso(String n){ curso=n; } public String getCurso(){ return curso; } public int setMedia(float n1, float n2){ if((n1>=0&&n1<=10)&&(n2>=0&&n2<=10)){ float m =(n1+n2)/2; media=m; return 0; } else return (-1); } //sobrecarga do método public float getMedia(){ return media; } public int setFaltas(int f){ faltas = f; return 0; } public int getFaltas(){ return faltas; } } Classe pessoa: class Pessoa{ private String nome; private String sexo; private String datanasc; Pessoa(){//método construtor se for instanciado s/ parâmetros nome="Maria"; sexo="f"; datanasc="10/10/2001"; } Pessoa(String n){//método construtor se instanciado c/ parâmetros nome=n; sexo="f"; datanasc="10/10/2001"; } public void setNome(String n){//método publico para atribiur nome nome=n; } public String getNome(){ //método public para recuperar o nome return nome; } public void setSexo(String s){//verifica o sexo antes de armazenar if(s.equals("Feminino")||s.equals("Masculino")) sexo=s; else sexo="a";//coloca "a" quando desconhecido } public String getSexo(){ //recupera o sexo return sexo; } public void setDatanasc(String d){//atribrui data de nascimento datanasc=d; } public String getDatanasc(){//recupera a data de nascimento return datanasc; } } Perceba que eu tenho vários métodos dentro dessas classes um exemplo é o método getSexo() da classe pessoa: public String getSexo(){ //recupera o sexo return sexo; } Ele está ligado com o método setSexo() ]tambem da classe pessoa, o qual será responsável por dar valor ao sexo da pessoa, sendo masculino, feminino ou nenhum: public void setSexo(String s){//verifica o sexo antes de armazenar if(s.equals("Feminino")||s.equals("Masculino")) sexo=s; else sexo="a";//coloca "a" quando desconhecido } Temos isto e então sabemos que se eu usar o método setSexo() eu vou dar valor a variável "Sexo" e o getSexo() vai me retornar qual é o valor desta variável. Agora temos a classe principal que é a TrataAlunoVisual, ela vai me permitir usar todos os métodos destas duas outras classes através da instrução "extends": Classe principal: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.text.*; public class TrataAlunoVisual extends JFrame implements ActionListener{ JLabel l1,l2,l3,l4,l5,l6,l7,l8,l9; JButton b1,b2; JTextField t1,t2,t3,t4,t5; JComboBox c1; JRadioButton r1,r2; ButtonGroup radio; JPanel p1; public TrataAlunoVisual(){ setTitle("Aluno"); setBounds(500,200,300,300); getContentPane().setBackground(Color.lightGray); getContentPane().setLayout(new GridLayout(9,2)); l1 = new JLabel("Nome:"); l1.setForeground(Color.BLACK); l1.setFont(new Font("Calibri",Font.BOLD,12)); l2 = new JLabel("Sexo:"); l2.setForeground(Color.BLACK); l2.setFont(new Font("Calibri",Font.BOLD,12)); l3 = new JLabel("Data de nascimento:"); l3.setForeground(Color.BLACK); l3.setFont(new Font("Calibri",Font.BOLD,12)); l4 = new JLabel("Curso"); l4.setForeground(Color.BLACK); l4.setFont(new Font("Calibri",Font.BOLD,12)); l5 = new JLabel("Faltas"); l5.setForeground(Color.BLACK); l5.setFont(new Font("Calibri",Font.BOLD,12)); l6 = new JLabel("Nota 1:"); l6.setForeground(Color.BLACK); l6.setFont(new Font("Calibri",Font.BOLD,12)); l7 = new JLabel("Nota 2:"); l7.setForeground(Color.BLACK); l7.setFont(new Font("Calibri",Font.BOLD,12)); l8 = new JLabel("Média:"); l8.setForeground(Color.BLACK); l8.setFont(new Font("Calibri",Font.BOLD,12)); l9 = new JLabel(""); l9.setForeground(Color.BLACK); l9.setFont(new Font("Calibri",Font.BOLD,12)); b1 = new JButton("Inserir"); b1.addActionListener(this); b2 = new JButton("Limpar"); b2.addActionListener(this); t1 = new JTextField(); t2 = new JTextField(); t3 = new JTextField(); t4 = new JTextField(); t5 = new JTextField(); String[] curso = {"Eletronica","Mecatronica","Jogos Digitais","Informatica"}; c1 = new JComboBox(curso); r1 = new JRadioButton("Feminino"); r2 = new JRadioButton("Masculino"); radio = new ButtonGroup(); radio.add(r1); radio.add(r2); p1 = new JPanel(); p1.setLayout(new GridLayout(2,1)); p1.add(r1); p1.add(r2); getContentPane().add(l1); getContentPane().add(t1); getContentPane().add(l2); getContentPane().add(p1); getContentPane().add(l3); getContentPane().add(t2); getContentPane().add(l4); getContentPane().add(c1); getContentPane().add(l5); getContentPane().add(t3); getContentPane().add(l6); getContentPane().add(t4); getContentPane().add(l7); getContentPane().add(t5); getContentPane().add(l8); getContentPane().add(l9); getContentPane().add(b1); getContentPane().add(b2); r1.isSelected(); } public static void main(String[] args) { JFrame jan = new TrataAlunoVisual(); jan.setUndecorated(true); jan.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); jan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jan.setVisible(true); } @Override public void actionPerformed(ActionEvent ae) { if(ae.getSource() == b1){ if(t1.getText().length()<=0||t2.getText().length()<=0||t3.getText().length()<=0||t4.getText().length()<=0||t5.getText().length()<=0) JOptionPane.showMessageDialog(null, "Há campos sem preenchimento"); else{ int d = data(); Aluno a1 = new Aluno(); float med=0,n1=0,n2=0; String media=""; String n, s, nasc, curso; int fal; if(d==1){ n1=Float.parseFloat(t4.getText()); n2=Float.parseFloat(t5.getText()); if(t1.getText().length()<=0||t2.getText().length()<=0||t3.getText().length()<=0||t4.getText().length()<=0||t5.getText().length()<=0){ JOptionPane.showMessageDialog(null, "Há campos sem preenchimento"); } else if(Integer.parseInt(t3.getText()) >20){ JOptionPane.showMessageDialog(null, "O numero de faltas não pode ser maior que 20"); } else if(n1>10 || n2>10){ JOptionPane.showMessageDialog(null,"As notas não podem ser maiores que 10"); } else { if(r1.isSelected()){s="Feminino"; a1.setSexo(s);} else if(r2.isSelected()) {s="Masculino"; a1.setSexo(s);} else if(!(r1.isSelected() || r2.isSelected())) {s="a"; a1.setSexo(s);} if(a1.getSexo().equals("a")){ JOptionPane.showMessageDialog(null,"Defina um sexo"); } //inicio da montagem else{ try { n = t1.getText(); a1.setNome(n); nasc = t2.getText(); a1.setDatanasc(nasc); int iindex; iindex = c1.getSelectedIndex(); switch(iindex){ case 0: {curso = "Eletronica" ; a1.setCurso(curso);} case 1: {curso = "Mecatronica" ; a1.setCurso(curso);} case 2: {curso = "Jogos Digitais" ; a1.setCurso(curso);} default:{curso = "Informática" ; a1.setCurso(curso);} } fal = Integer.parseInt(t3.getText()); a1.setFaltas(fal); a1.setMedia(n1, n2); med = a1.getMedia(); DecimalFormat df = new DecimalFormat(); df.applyPattern("0.0"); media = df.format(med); l9.setText(media); JOptionPane.showMessageDialog(null,"Concluido com sucesso!!\n" +"Nome: " +a1.getNome() +"\n" +"Sexo: " +a1.getSexo() +"\n" +"Data de nascimento: " +a1.getDatanasc() +"\n" +"Curso: " +a1.getCurso() +"\n" +"Faltas: " +a1.getFaltas() +"\n" +"Nota 1: " +n1 +"\n" +"Nota 2: " +n2 +"\n" +"Media: " +media); } catch(Exception e){ JOptionPane.showMessageDialog(null, "Não foi possivel completar ação, erro: " +e); System.out.println(e.getMessage());//mensagem de erro e.printStackTrace();//mostra a exceção e a linha do erro; } } } } } } if(ae.getSource()==b2){ t1.setText(null); t2.setText(null); t3.setText(null); t4.setText(null); t5.setText(null); radio.clearSelection(); c1.setSelectedIndex(0); l9.setText(null); } } public int data() { try{ String frase=""; int tam,ct1 = 0, dia,mes,ano; Aluno a1 = new Aluno(); tam = t2.getText().length(); frase = t2.getText(); System.out.println(frase); if (tam == 8) { //transformando caracteres para pegar chars exatos String ar2[] = new String[5]; ar2[0] = frase.substring(0,2); ar2[1] = frase.substring(2,3); ar2[2] = frase.substring(3,5); ar2[3] = frase.substring(5,6); ar2[4] = frase.substring(6,8); //-------------------- if(ar2[3].equals("/") && ar2[1].equals("/")){ DecimalFormat ddia = new DecimalFormat(); ddia.applyPattern("00.#"); dia = Integer.parseInt(ar2[0]); dia = Integer.parseInt(ddia.format(dia)); mes = Integer.parseInt(ar2[2]); mes=Integer.parseInt(ddia.format(mes)); ano = Integer.parseInt(ar2[4]); ano=Integer.parseInt(ddia.format(ano)); if (ano>=32){ ar2[4] = "19" +ar2[4]; ano=Integer.parseInt(ar2[4]); } else{ ar2[4] = "20" +ar2[4]; ano=Integer.parseInt(ar2[4]); } System.out.println("Data digitada: "+dia+ar2[3]+mes+ar2[1]+ano); //------------------------- //inicio do programa System.out.println("Inicio do programa"); if(ano%4==0 && mes==02){ if(dia>29||dia==0){ JOptionPane.showMessageDialog(null,"Digite um dia menor que 29 diferente de 0, este ano é bissexto"); ct1 = 0; return 0; } } //fim verificação fevereiro biss. else if(mes%4!=0 && mes==02) { if(dia>28 || dia==0){ JOptionPane.showMessageDialog(null,"Digite um dia menor que 28 diferente de 0, este ano não é bissexto"); ct1 = 0; return 0; } } //fim verificação fevereiro não biss //verificão outros else if(mes==01 ||mes==03 ||mes==05 ||mes==07 ||mes==8 ||mes==10 ||mes==12 && mes<=12){ if(dia>31 || dia==0){ JOptionPane.showMessageDialog(null,"Digite um dia menor que 31 diferente de 0"); ct1 = 0; return 0; } } //fim meses com 31 else if(mes==04 || mes==6 || mes==9 ||mes==11 && mes<=12){ if(dia>30 || dia ==0){ JOptionPane.showMessageDialog(null,"Digite um dia menor que 30 diferente de 0"); ct1 = 0; return 0; } } //fim meses pares com 30 if(mes>12){ JOptionPane.showMessageDialog(null, "Valor de mes incorreto, o que você digitou não era um mes válido."); ct1=0; return 0; } } //fim verificação das "/" else{ JOptionPane.showMessageDialog(null,"Isto não é uma data."); ct1=0; return 0; } } else{ JOptionPane.showMessageDialog(null,"Isto não é uma data"); ct1=0; return 0; } } catch(Exception e){ JOptionPane.showMessageDialog(null,"Erro " +e); System.out.println(e.getMessage());//mensagem de erro e.printStackTrace();//mostra a exceção e a linha do erro; } return 1; } } Perceba que colocando todos na mesma pasta de compilação eu não necessitei da instrução "extends" para estender as outras classes, e note os métodos de outras classes sendo usados nesta: n = t1.getText(); [b]a1.setNome(n);[/b] nasc = t2.getText(); [b] a1.setDatanasc(nasc);[/b] int iindex; iindex = c1.getSelectedIndex(); switch(iindex){ case 0: {curso = "Eletronica" ; [b]a1.setCurso(curso);}[/b] case 1: {curso = "Mecatronica" ; [b] a1.setCurso(curso);}[/b] case 2: {curso = "Jogos Digitais" ; [b]a1.setCurso(curso);}[/b] default:{curso = "Informática" ; [b]a1.setCurso(curso);[/b]} } fal = Integer.parseInt(t3.getText()); a1.setFaltas(fal); [b]a1.setMedia(n1, n2); [/b] med = a1.[b]getMedia();[/b] Veja os métodos get e set. E aqui é onde eu chamo a classe que eu preciso, instanciando-a: Aluno a1 = new Aluno(); Para isto que servem outras classes no programa. Espero ter ajudado ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Vergil 15 Denunciar post Postado Abril 30, 2012 Bem, acho que o colega KhaosDoctor está meio confuso quanto a alguns conceitos. Mas respondendo às perguntas: Qual a diferença entre .Class e .Jar se é que existe? Um arquivo .class é o resultado da compilação de um .java O que significa que o .class é a transformação do arquivo fonte Java para o seu respectivo byte-code. Arquivos .jar nada mais são que arquivos compactados, similares ao ZIP. Então o arquivo JAR: Java Archive, serve para agrupar arquivos com byte-codes e outros recursos como manifest, xml, properties etc. Como compilo uma classe Java no Eclipse? No Eclipse eu não sei ao certo. Creio que no menu Run / Run as você consiga fazer isso. Agora, pra compilar diretamente no compilador java, basta usar o comando javac Classe.java . Esse comando gerará o byte-code Classe.class. Para executar o arquivo faça java Classe . Compartilhar este post Link para o post Compartilhar em outros sites
MarKteus 1 Denunciar post Postado Abril 30, 2012 Bem, acho que o colega KhaosDoctor está meio confuso quanto a alguns conceitos. Mas respondendo às perguntas: Um arquivo .class é o resultado da compilação de um .java O que significa que o .class é a transformação do arquivo fonte Java para o seu respectivo byte-code. Arquivos .jar nada mais são que arquivos compactados, similares ao ZIP. Então o arquivo JAR: Java Archive, serve para agrupar arquivos com byte-codes e outros recursos como manifest, xml, properties etc. No Eclipse eu não sei ao certo. Creio que no menu Run / Run as você consiga fazer isso. Agora, pra compilar diretamente no compilador java, basta usar o comando javac Classe.java . Esse comando gerará o byte-code Classe.class. Para executar o arquivo faça java Classe . Valew, Vergil. Compartilhar este post Link para o post Compartilhar em outros sites