Problema ao executar class

4 respostas
D

Estou com um problema quando tento executar meu arquivo .class.
Eu criei duas classes, e em uma delas existem duas classes internas anonimas que eu usei para tratar eventos, quado eu compilo e executo atraves da IDE (JCreator) tudo ocorre sem erros, eu executo perfeitamente a minha class, mas quando eu tento executar o arquivo .class atraves da linha de comando da erro e eu não consigo executa-la, o problema é que estou fazendo um programa para organizar as bandas de metal que tenho no computador de um amigo meu e gostaria apenas de mandar os arquivos .class com um .BAT que executasse a minha classe que possui o método main, porem quando tento executar da o erro que falei, diz que não é possivel encontrar o método main da classe oO

O codigo fonte das classes:

ListarDiretorio:
/**
 * @(#)ListarDiretorios.java
 *
 *
 * @author 
 * @version 1.00 2008/4/15
 */
 
package m.listaDoMetal; 

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ListarDiretorios 
{
   private String diretorioRaizString;
   private File diretorioRaiz;
   private StringBuffer buffer;
   private FileWriter saida;


    public ListarDiretorios(String diretorio)
    {
      diretorioRaizString = diretorio;
      diretorioRaiz = new File(diretorioRaizString);
      buffer = new StringBuffer(2000);
      try
      {
         saida = new FileWriter("Metal3l.doc", true);
      }
      catch (IOException ex)
      {
         System.out.println("Deu merda");
      }   
    }
    
    public StringBuffer gerarLista()
    {
      try
      {
         listarDiretorio(diretorioRaiz, 0);
         saida.close();
      }
      catch (IOException ex)
      {
         System.out.println("Deu merda");
      }
      
      return this.buffer;   
    }
    
    public void listarDiretorio(File diretorio, int nivel) 
    {
      if (diretorio.isDirectory() == true)
      {
         try
         {
            File listaArquivos[] = diretorio.listFiles();
            this.buffer.append(this.identar(nivel) + "Dir: " + diretorio.getName() + "\n");
            this.saida.write(this.identar(nivel) + "Dir: " + diretorio.getName() + "\n");
         
            for (int i = 0; i < listaArquivos.length - 1; i++) 
            {
               listarDiretorio(listaArquivos[i], nivel + 1);
            }
         }
         catch (IOException ex)
         {
            System.out.println("Deu merda");
         }
      }
      else
      {
      }
    }
    
    public String identar(int nivel)
    {
      StringBuffer buffer = new StringBuffer(15);
      for (int i = 0; i < nivel; i++)
      {
         buffer.append("   ");
      }
      return buffer.toString();
    }  
    
}
ListarMetal
/**
 * @(#)ListarMetal.java
 *
 *
 * @author 
 * @version 1.00 2008/4/15
 */

package m.listaDoMetal;

import java.io.FileWriter;
import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class ListarMetal extends JFrame
{
   JLabel mensagem;
   JTextArea visualização;
   JScrollPane barra;
   JButton salvar;
   JButton listar;
   ListarDiretorios lista;
   
   public ListarMetal()
   {
      super("-|- MAH ATUALIZA A LISTA DO METAL _|_");
      Container container = getContentPane();
      container.setLayout(null);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      lista = new ListarDiretorios("D:\Metal\");
      visualização = new JTextArea(15, 15);
      visualização.setEditable(false);
      barra = new JScrollPane(visualização);
      barra.setBounds(50, 75, 300, 300);
      container.add(barra);
      listar = new JButton("Listar Metal");
      listar.addActionListener(
         new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               listarMetal();
               listar.setEnabled(false);
            }
         }
         );
     listar.setBounds(50, 10, 100, 20);    
     container.add(listar);
     
     salvar = new JButton("Salvar");
     salvar.addActionListener(
      new ActionListener()
      {
         public void actionPerformed(ActionEvent event)
         {
            salvarMetal();
         }
      }
      );
      salvar.setBounds(200, 10, 100, 20);
     container.add(salvar);    
     
      
   }
   
   public static void main(String args[]) throws IOException
   {
      ListarMetal app = new ListarMetal();
      app.setSize(640, 480);
      app.setVisible(true);
      app.setResizable(false);
      app.show();     
   }
   
   public void salvarMetal()
   {
      try
      {
         FileWriter arquivo = new FileWriter("Lista de Metal.txt");
         arquivo.write(visualização.getText());
         arquivo.close();
      }
      catch (IOException ex)
      {
         JOptionPane.showMessageDialog(null, "Houve um erro ao tentar criar o arquivo");
      }   
   }
   
   public void listarMetal()
   {
      visualização.append(lista.gerarLista().toString());
   }
}

4 Respostas

T

a) Como é a tal batch que você está criando?
b) Normalmente a linha de comando é algo como:

java -classpath . m.listaDoMetal.ListarMetal

lgi2020

Fiz um teste…

Removi as declarações de pacote do seu programa e funcionou normalmente…

O problema deve estar na sua batch.

Uma dica pra ficar legal: pesquise sobre como fazer um .jar!

Abraços.

D

Eu já pesquisei sobre como fazer uma jar mas não consegui, eu crio um arquivo .txt com a seguinte declaração na primeira linha Main-Class: Main-Class: m.listaDoMetal.ListarMetal porem da erro também

maior_abandonado

vc usa o net beans??

caso sim, clicando em construir projeto ele gera um .jar pra vc, axo q na pasta dist do projeto…olha todas la q eu me eskeci…rs

acredito que o eclipse faça um jar pra vc tb mais não o conheço…

só pra constar, dentro desse jar (que é um arquivo compactado semelhante a um .zip) vai ter um arquivo chamado manifest.mf, o netbeans mtas vezes ja gero esse arquivo errado, mais vc só tem que abri e edita o texto dele, eu uso um padrão assim:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Class-Path: meta-inf
Created-By: 1.6.0_02-b06 (Sun Microsystems Inc.)
Main-Class: caminho da sua classe main a partir do jar

facilita bastante

Criado 29 de novembro de 2007
Ultima resposta 30 de nov. de 2007
Respostas 4
Participantes 4