Como executo um programa Java a partir da linha de comando no Windows?


216

Estou tentando executar um programa Java na linha de comando do Windows. Aqui está o meu código:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyFile
{
    public static void main(String[] args)
    {

        InputStream inStream = null;
        OutputStream outStream = null;

        try
        {

            File afile = new File("input.txt");
            File bfile = new File("inputCopy.txt");

            inStream = new FileInputStream(afile);
            outStream = new FileOutputStream(bfile);

            byte[] buffer = new byte[1024];

            int length;
            // copy the file content in bytes
            while ((length = inStream.read(buffer)) > 0)
            {

                outStream.write(buffer, 0, length);

            }

            inStream.close();
            outStream.close();

            System.out.println("File is copied successful!");

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

Não sei como executar o programa - alguma ajuda? Isso é possível no Windows? Por que é diferente de outro ambiente (pensei que a JVM fosse escrita uma vez, executada em qualquer lugar)?


33
javac CopyFile.javae entãojava CopyFile
alfasin

Estou na linha de comando agora, preciso salvar meus arquivos txt na mesma pasta que o programa para que eles sejam chamados?
Elizabeth Turner

Qual pacote CopyFilereside?
MadProgrammer

1
@Elizabeth Turner primeiro, você deve certificar-se de que instalou o JRE (Java Runtime Env) e que seja acessível de todas as pastas (o caminho para Java / Javac está incluído na variável env PATH). Em seguida, execute os comandos que escrevi acima na mesma pasta em que o CopyFile.java está localizado.
Alfasin

Respostas:


240

Fonte: javaindos.

Digamos que seu arquivo esteja em C: \ mywork \

Executar prompt de comando

C:\> cd \mywork

Isso faz de C: \ mywork o diretório atual.

C:\mywork> dir

Isso exibe o conteúdo do diretório. Você deverá ver o nome do arquivoaqui.java entre os arquivos.

C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin

Isso informa ao sistema onde encontrar os programas JDK.

C:\mywork> javac filenamehere.java

Isso executa o javac.exe, o compilador. Você não verá nada além do próximo prompt do sistema ...

C:\mywork> dir

javac criou o arquivo filenamehere.class. Você deve ver filenamehere.java e filenamehere.class entre os arquivos.

C:\mywork> java filenamehere

Isso executa o interpretador Java. Você deve ver a saída do seu programa.

Se o sistema não conseguir encontrar o javac, verifique o comando set path. Se o javac for executado, mas você obtiver erros, verifique seu texto Java. Se o programa compilar, mas você receber uma exceção, verifique a ortografia e letras maiúsculas no nome do arquivo, no nome da classe e no comando java HelloWorld. Java faz distinção entre maiúsculas e minúsculas!


27
O im questão tendo é quando eu tento executar o compilador eu recebo um erro "não foi possível encontrar ou carregar CopyFile classe principal
Elizabeth Turner

2
Se você tiver a pasta que contém CopyFile.class definido como o diretório atual, simplesmente tentar "java -cp CopyFile." Caso contrário "java -cp FULLPATH CopyFile"
Nicholas Kadaeux

Como eu criaria um arquivo em lotes que compila e executa o código, mas, se já havia sido compilado antes, basta iniciá-lo?
desenvolvedor android

2
O que está faltando: se a classe foi declarada em um determinado pacote, você deve colocar o .classarquivo na estrutura de diretórios apropriada. O diretório atual é o caminho de classe padrão, portanto você não precisa definir -cp .manualmente.
Artur Czajka #

2
Com certeza, você deve usar um pacote: package mypackage; então vá para o seu nome do projeto /. Run java mypackage.Main
chrips

108

Para completar a resposta:

  1. O arquivo Java

    TheJavaFile.java
  2. Compile o arquivo Java em um arquivo * .class

    javac TheJavaFile.java
    • Isso criará um TheJavaFile.classarquivo
  3. Execução do arquivo Java

    java TheJavaFile
  4. Criação de um *.jararquivo executável

    • Você tem duas opções aqui -

      1. Com um arquivo de manifesto externo:

        • Crie o arquivo de manifesto, digamos - MANIFEST.mf

        • O arquivo MANIFEST nada mais é do que uma entrada explícita da classe principal

        • jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class

      2. Executável por ponto de entrada:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. Para executar o arquivo jar

    java -jar TheJavaFile.jar

5
por favor você pode mostrar o conteúdo de MANIFEST.MF, porque quando eu tento "executável pelo ponto de entrada" diz a classe principal não pode ser encontrado
Pini Cheyni

@Pini Cheyni Se sua classe é chamado de MainClass então o seu arquivo de manifesto terá uma entrada para o MainClass: MainClass
jkhosla

@PiniCheyni, As 2 maneiras de criar jars executáveis ​​são bem explicadas aqui. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Dinesh Kumar P

no ponto 3, quando você chama java TheJavaFileisso é equivalente a java TheJavaFile.class... para que você não esteja executando o arquivo java como você afirmou. você está executando o arquivo de classe. arquivos java são fontes que não são executáveis
user2914191

21

Caso sua classe Java esteja em algum pacote. Suponha que sua classe Java nomeada ABC.javaesteja presente emcom.hello.programs , então você precisa executá-la com o nome do pacote.

Compile da maneira usual:

C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java

Mas, para executá-lo, você precisa fornecer o nome do pacote e o nome da sua classe java:

C:\SimpleJavaProject\src > java com.hello.programs.ABC

19

Complete um arquivo Java para gerar uma classe:

javac filename.java

Execute a classe gerada:

java filename

Observe que seu "nome do arquivo" é realmente o nome de uma classe. O java.exe procurará em cada arquivo * .jar por uma classe com esse nome.
Doomjunky

@Doomjunky Você poderia explicar, por favor? Isso é bom ou ruim? Deveria ter um nome diferente?
David Ferenczy Rogožan

9

Isso é fácil. Se você salvou seu arquivo como A.text, a primeira coisa a fazer é salvá-lo como A.java. Agora é um arquivo Java.

Agora você precisa abrir o cmd e definir o caminho para o seu arquivo A.java antes de compilá-lo. você pode consultar isso para isso.

Então você pode compilar seu arquivo usando o comando

javac A.java

Em seguida, execute-o usando

java A

Então é assim que você compila e executa um programa java no cmd. Você também pode passar por esse material que é Java em profundidade. Muitas coisas que você precisa entender em Java são abordadas aqui para iniciantes.


7

Você pode compilar qualquer fonte java usando javac na linha de comando; por exemplo, javac CopyFile.java. Para executar: java CopyFile. Você também pode compilar todos os arquivos java usando javac * .java, desde que estejam no mesmo diretório

Se você está tendo um problema resultante de "não foi possível encontrar ou carregar a classe principal", talvez não tenha o jre no caminho. Dê uma olhada nesta pergunta: Não foi possível encontrar ou carregar a classe principal


7

Supondo que o arquivo seja chamado "CopyFile.java", faça o seguinte:

javac CopyFile.java
java -cp . CopyFile

A primeira linha compila o código-fonte em código de bytes executável. A segunda linha o executa, adicionando primeiro o diretório atual ao caminho da classe (apenas no caso).


3
mycomputer: usuário bin $ java -cp. Erro Main.class: Não foi possível encontrar ou carregar a classe principal Main.class
chrips


4

No Windows 7, tive que fazer o seguinte:

Atalho

  1. Instale o JDK http://www.oracle.com/technetwork/java/javase/downloads
  2. no Windows, navegue até "C: \ Arquivos de programas \ Java \ jdk1.8.0_91 \ bin" (ou onde quer que a versão mais recente do JDK esteja instalada), mantenha pressionada a tecla Shift e clique com o botão direito do mouse em uma área em branco na janela e abra " janela de comando aqui "e isso fornecerá uma linha de comando e acesso a todas as ferramentas BIN. "javac" não é por padrão na variável de ambiente PATH do sistema Windows.
  3. Siga os comentários acima sobre como compilar o arquivo ("javac MyFile.java" e "java MyFile") https://stackoverflow.com/a/33149828/194872

longo caminho

  1. Instale o JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Após a instalação, edita a variável de ambiente PATH do Windows e adiciona o seguinte ao caminho C: \ ProgramData \ Oracle \ Java \ javapath. Dentro desta pasta há links simbólicos para um punhado de executáveis ​​java, mas "javac" NÃO é um deles portanto, ao tentar executar "javac" na linha de comando do Windows, gera um erro.
  3. Editei o caminho: Painel de controle -> Sistema -> guia Avançado -> botão "Variáveis ​​de ambiente ..." -> role para baixo até "Caminho", destaque e edite -> substitui o "C: \ ProgramData \ Oracle \ Java \ javapath "com um caminho direto para a pasta BIN java" C: \ Arquivos de Programas \ Java \ jdk1.8.0_91 \ bin ".
  4. É provável que isso ocorra quando você atualiza sua instalação do JDK, mas agora você tem acesso a todas as ferramentas de linha de comando.

  5. Siga os comentários acima sobre como compilar o arquivo ("javac MyFile.java" e "java MyFile") https://stackoverflow.com/a/33149828/194872


2

insira a descrição da imagem aqui PASSO 1: ABRA PRIMEIRO O PROMPT DE COMANDO ONDE SEU ARQUIVO ESTÁ LOCALIZADO. (clique com o botão direito do mouse enquanto pressiona Shift)
ETAPA 2: ENTÃO USE OS SEGUINTES COMANDOS PARA EXECUTAR. (digamos que o nome do arquivo e da classe a ser executado seja nomeado como Student.java) O programa de exemplo está em segundo plano.

     javac Student.java
     java Student

insira a descrição da imagem aqui


1

A partir do Java 9, o JDK inclui jshellum Java REPL.

Supondo que o bindiretório JDK 9+ seja adicionado corretamente ao seu caminho, você poderá:

  1. Executar jshell File.java- File.javasendo seu arquivo, é claro.
  2. Um prompt será aberta, permitindo que você chamar o mainmétodo: jshell> File.main(null).
  3. Para fechar o prompt e finalizar a sessão da JVM, use /exit

A documentação completa do JShell pode ser encontrada aqui .


1

Agora (com o JDK 9 em diante), você pode apenas usar o java para executá-lo. Para executar "Hello.java" contendo o principal, pode-se usar: java Hello.java

Você não precisa mais compilar usando o javac separadamente.


Esta característica foi adicionada em JDK 11.
Holger
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.