Come posso eseguire un programma Java dalla riga di comando su Windows?


216

Sto cercando di eseguire un programma Java dalla riga di comando in Windows. Ecco il mio codice:

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

Non sono sicuro di come eseguire il programma - qualche aiuto? Questo è possibile su Windows? Perché è diverso da un altro ambiente (pensavo che JVM fosse una volta scritto, eseguito ovunque)?


33
javac CopyFile.javae poijava CopyFile
— Alfasin il

Sono alla riga di comando ora, devo salvare i miei file txt nella stessa cartella del programma per poterli invocare?
— Elizabeth Turner,

Quale pacchetto CopyFilerisiede
— MadProgrammer

1
@Elizabeth Turner per prima cosa devi assicurarti di aver installato JRE (Java Runtime Env) e che sia accessibile da ogni cartella (il percorso di Java / Javac è incluso nella variabile env PATH). Quindi esegui i comandi che ho scritto sopra dalla stessa cartella in cui si trova CopyFile.java.
— Alfasin il

Risposte:


240

Fonte: javaindos.

Supponiamo che il tuo file sia in C: \ mywork \

Esegui prompt dei comandi

C:\> cd \mywork

Questo rende C: \ mywork la directory corrente.

C:\mywork> dir

Questo visualizza il contenuto della directory. Dovresti vedere nomefilehere.java tra i file.

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

Questo dice al sistema dove trovare i programmi JDK.

C:\mywork> javac filenamehere.java

Questo esegue javac.exe, il compilatore. Non dovresti vedere altro che il prossimo prompt di sistema ...

C:\mywork> dir

javac ha creato il file filenamehere.class. Dovresti vedere nomefilehere.java e nomefilehere.class tra i file.

C:\mywork> java filenamehere

Questo esegue l'interprete Java. Dovresti quindi vedere l'output del tuo programma.

Se il sistema non riesce a trovare javac, controllare il comando set path. Se javac viene eseguito ma si verificano errori, controllare il testo Java. Se il programma viene compilato ma si ottiene un'eccezione, controllare l'ortografia e le maiuscole nel nome del file, il nome della classe e il comando java HelloWorld. Java fa distinzione tra maiuscole e minuscole!


27
Il problema che sto riscontrando è quando provo a eseguire il compilatore ottengo un errore "Impossibile trovare o caricare la classe principale CopyFile
— Elizabeth Turner

2
Se la cartella contenente CopyFile.class è impostata come directory corrente, prova semplicemente "java -cp. CopyFile" Altrimenti "java -cp FULLPATH CopyFile"
— Nicholas Kadaeux

Come potrei creare un file batch che compila ed esegue il codice, ma se fosse stato compilato prima, lo avvierei?
— sviluppatore Android

2
Cosa manca: se la classe è stata dichiarata in un determinato pacchetto, è necessario inserire il .classfile nella struttura di directory appropriata. La directory corrente è il percorso di classe predefinito, quindi non è necessario impostare -cp .manualmente.
— Artur Czajka,

2
Di sicuro, dovresti usare un pacchetto: pacchetto mypackage; quindi vai al nome del tuo progetto /. Esegui java mypackage.Main
— chrips

108

Per completare la risposta:

  1. Il file Java

    TheJavaFile.java
  2. Compilare il file Java in un file * .class

    javac TheJavaFile.java
    • Questo creerà un TheJavaFile.classfile
  3. Esecuzione del file Java

    java TheJavaFile
  4. Creazione di un *.jarfile eseguibile

    • Hai due opzioni qui -

      1. Con un file manifest esterno:

        • Creare il file manifest dire - MANIFEST.mf

        • Il file MANIFEST non è altro che una voce esplicita della classe principale

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

      2. Eseguibile per punto di ingresso:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. Per eseguire il file Jar

    java -jar TheJavaFile.jar

5
puoi per favore mostrare il contenuto di MANIFEST.mf, perché quando provo a "Eseguibile per punto di ingresso" si dice che la classe principale non può essere trovata
— Pini Cheyni il

@Pini Cheyni Se la tua classe si chiama MainClass, il tuo file manifest avrà una voce per la Main-Class: MainClass
— jkhosla

@PiniCheyni, I 2 modi per creare barattoli eseguibili sono spiegati bene qui. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
— Dinesh Kumar P

al punto 3, quando si chiama è java TheJavaFileequivalente a java TheJavaFile.class.. quindi non si esegue il file java come indicato. stai eseguendo il file di classe. I file Java sono fonti che non sono eseguibili
— user2914191

21

Nel caso in cui la tua classe Java sia in un pacchetto. Supponiamo che la tua classe Java di nome ABC.javasia presente incom.hello.programs , quindi devi eseguirla con il nome del pacchetto.

Compilalo nel solito modo:

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

Ma per eseguirlo, devi dare il nome del pacchetto e quindi il nome della tua classe java:

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

19

Compila un file Java per generare una classe:

javac filename.java

Eseguire la classe generata:

java filename

Nota che il tuo "nome file" è in realtà un nome di una classe. Java.exe cercherà in ogni file * .jar una classe con questo nome.
— Doomjunky,

@Doomjunky Potresti spiegarlo, per favore? È buono o cattivo? Dovrebbe essere chiamato diversamente?
— David Ferenczy Rogožan,

9

È facile. Se il file è stato salvato come A.text, la prima cosa da fare è salvarlo come A.java. Ora è un file Java.

Ora devi aprire cmd e impostare il percorso del tuo file A.java prima di compilarlo. puoi fare riferimento a questo per quello.

Quindi puoi compilare il tuo file usando il comando

javac A.java

Quindi eseguirlo usando

java A

Ecco come compilare ed eseguire un programma java in cmd. Puoi anche consultare questo materiale che è Java lezioni approfondite. Molte cose che devi capire in Java sono coperte lì per i principianti.


7

Puoi compilare qualsiasi sorgente java usando javac nella riga di comando; ad esempio, javac CopyFile.java. Per eseguire: java CopyFile. Puoi anche compilare tutti i file java usando javac * .java purché si trovino nella stessa directory

Se riscontri un problema con "Impossibile trovare o caricare la classe principale", potresti non avere jre nel tuo percorso. Dai un'occhiata a questa domanda: Impossibile trovare o caricare la classe principale


7

Supponendo che il file sia chiamato "CopyFile.java", procedere come segue:

javac CopyFile.java
java -cp . CopyFile

La prima riga compila il codice sorgente in codice byte eseguibile. La seconda riga lo esegue, aggiungendo prima la directory corrente al percorso della classe (per ogni evenienza).


3
mycomputer: bin user $ java -cp. Errore Main.class: Impossibile trovare o caricare la classe principale Main.class
— chrips


4

Su Windows 7 ho dovuto fare quanto segue:

modo rapido

  1. Installa JDK http://www.oracle.com/technetwork/java/javase/downloads
  2. in Windows, selezionare "C: \ Programmi \ Java \ jdk1.8.0_91 \ bin" (o ovunque sia installata l'ultima versione di JDK), tenere premuto MAIUSC e fare clic con il tasto destro su un'area vuota all'interno della finestra e fare "apri finestra di comando qui "e questo ti darà una riga di comando e l'accesso a tutti gli strumenti BIN. "javac" non è di default nella variabile d'ambiente PATH del sistema Windows.
  3. Segui i commenti sopra su come compilare il file ("javac MyFile.java" quindi "java MyFile") https://stackoverflow.com/a/33149828/194872

lunga via

  1. Installa JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Dopo l'installazione, modifica la variabile di ambiente PATH di Windows e aggiunge quanto segue al percorso C: \ ProgramData \ Oracle \ Java \ javapath. All'interno di questa cartella ci sono collegamenti simbolici a una manciata di eseguibili java ma "javac" NON è uno di questi, quindi quando si tenta di eseguire "javac" dalla riga di comando di Windows viene generato un errore.
  3. Ho modificato il percorso: Pannello di controllo -> Sistema -> scheda Avanzate -> pulsante "Variabili d'ambiente ..." -> scorrere fino a "Percorso", evidenziare e modificare -> sostituito il "C: \ ProgramData \ Oracle \ Java \ javapath "con un percorso diretto alla cartella BIN java" C: \ Programmi \ Java \ jdk1.8.0_91 \ bin ".
  4. Questo probabilmente si interrompe quando aggiorni l'installazione di JDK ma ora hai accesso a tutti gli strumenti della riga di comando.

  5. Segui i commenti sopra su come compilare il file ("javac MyFile.java" quindi "java MyFile") https://stackoverflow.com/a/33149828/194872


2

inserisci qui la descrizione dell'immagine PASSAGGIO 1: PRIMA APRIRE IL COMANDO PROMPT DOVE SI TROVA IL FILE. (fare clic con il tasto destro del mouse mentre si preme il tasto MAIUSC)
PASSAGGIO 2: UTILIZZARE I SEGUENTI COMANDI SEGUENTI PER ESEGUIRE. (supponiamo che il nome del file e della classe da eseguire sia chiamato Student.java) Il programma di esempio si trova sullo sfondo dell'immagine.

     javac Student.java
     java Student

inserisci qui la descrizione dell'immagine


1

A partire da Java 9, il JDK include jshellun REPL Java.

Supponendo che la bindirectory JDK 9+ sia correttamente aggiunta al tuo percorso, sarai semplicemente in grado di:

  1. Esegui jshell File.java- File.javaovviamente il tuo file.
  2. Una richiesta si aprirà, permettendo di chiamare il mainmetodo: jshell> File.main(null).
  3. Per chiudere il prompt e terminare la sessione JVM, utilizzare /exit

La documentazione completa per JShell è disponibile qui .


1

Ora (con JDK 9 in poi), puoi semplicemente usare java per farlo eseguire. Per eseguire "Hello.java" contenente il principale, è possibile utilizzare: java Hello.java

Non è più necessario compilare utilizzando separatamente utilizzando javac.


Questa funzione è stata aggiunta in JDK 11.
— Holger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.