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.