Problema ao executar class

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:

[code]/**

  • @(#)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();
}  

}[/code]

ListarMetal

[code]/**

  • @(#)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());
}
}[/code]

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

java -classpath . m.listaDoMetal.ListarMetal

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.

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

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