Jak uruchomić program Java z wiersza polecenia w systemie Windows?


216

Próbuję uruchomić program Java z wiersza polecenia w systemie Windows. Oto mój kod:

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

Nie jestem pewien, jak wykonać program - jakaś pomoc? Czy jest to możliwe w systemie Windows? Dlaczego różni się od innego środowiska (myślałem, że JVM pisał raz, działał gdziekolwiek)?


33
javac CopyFile.javaa następniejava CopyFile
alfasin

Jestem teraz w wierszu poleceń, czy muszę zapisać moje pliki TXT w tym samym folderze, co program, aby je wywołać?
Elizabeth Turner,

Jaki pakiet CopyFilerezyduje
MadProgrammer

1
@Elizabeth Turner najpierw musisz upewnić się, że zainstalowałeś JRE (Java Runtime Env) i że jest dostępny z każdego folderu (ścieżka do Java / Javac jest zawarta w zmiennej PATH env). Następnie uruchom polecenia, które napisałem powyżej, z tego samego folderu, w którym znajduje się plik CopyFile.java.
alfasin

Odpowiedzi:


240

Źródło: javaindos.

Załóżmy, że Twój plik znajduje się w C: \ mywork \

Uruchom wiersz polecenia

C:\> cd \mywork

To sprawia, że ​​C: \ mywork jest bieżącym katalogiem.

C:\mywork> dir

Wyświetla zawartość katalogu. Powinieneś zobaczyć filenamehere.java wśród plików.

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

To informuje system, gdzie znaleźć programy JDK.

C:\mywork> javac filenamehere.java

Spowoduje to uruchomienie javac.exe, kompilatora. Powinieneś zobaczyć tylko następny monit systemowy ...

C:\mywork> dir

javac utworzył plik filenamehere.class. Powinieneś zobaczyć między plikami filenamehere.java i filenamehere.class.

C:\mywork> java filenamehere

Spowoduje to uruchomienie interpretera Java. Powinieneś zobaczyć wynik swojego programu.

Jeśli system nie może znaleźć javac, sprawdź polecenie set path. Jeśli javac działa, ale występują błędy, sprawdź tekst Java. Jeśli program się kompiluje, ale pojawia się wyjątek, sprawdź pisownię i wielkie litery w nazwie pliku oraz nazwie klasy i komendzie Java HelloWorld. W Javie rozróżniana jest wielkość liter!


27
Mam problem, gdy próbuję uruchomić kompilator, pojawia się błąd „nie można znaleźć lub załadować głównej klasy CopyFile
Elizabeth Turner

2
Jeśli masz folder zawierający CopyFile.class ustawiony jako bieżący katalog, po prostu spróbuj „java -cp. CopyFile” W przeciwnym razie „java -cp FULLPATH CopyFile”
Nicholas Kadaeux

Jak mam utworzyć plik wsadowy, który kompiluje i uruchamia kod, a jeśli byłby wcześniej kompilowany, to po prostu go uruchomiłem?
programista Androida

2
Czego brakuje: jeśli klasa została zadeklarowana w określonym pakiecie, musisz umieścić .classplik w odpowiedniej strukturze katalogów. Bieżący katalog jest domyślną ścieżką klasy, więc nie musisz ustawiać -cp .ręcznie.
Artur Czajka

2
Na pewno powinieneś używać pakietów: mypackage pakietu; następnie przejdź do nazwy projektu /. Uruchom pakiet java mypackage. Główny
chrips

108

Aby uzupełnić odpowiedź:

  1. Plik Java

    TheJavaFile.java
  2. Skompiluj plik Java do pliku * .class

    javac TheJavaFile.java
    • Spowoduje to utworzenie TheJavaFile.classpliku
  3. Wykonanie pliku Java

    java TheJavaFile
  4. Utworzenie *.jarpliku wykonywalnego

    • Masz tutaj dwie opcje -

      1. Za pomocą zewnętrznego pliku manifestu:

        • Utwórz plik manifestu powiedz - MANIFEST.mf

        • Plik MANIFEST jest niczym innym jak wyraźnym wpisem klasy głównej

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

      2. Plik wykonywalny według punktu wejścia:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. Aby uruchomić plik jar

    java -jar TheJavaFile.jar

5
czy możesz pokazać zawartość pliku MANIFEST.mf, ponieważ gdy próbuję „Wykonać według punktu wejścia”, mówi, że nie można znaleźć głównej klasy
Pini Cheyni

@Pini Cheyni Jeśli twoja klasa nazywa się MainClass, to plik manifestu będzie zawierał wpis dla klasy głównej: MainClass
jkhosla

@PiniCheyni, 2 sposoby tworzenia plików wykonywalnych są dobrze wyjaśnione tutaj. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Dinesh Kumar P

w punkcie 3, gdy wywołujesz java TheJavaFileodpowiednik java TheJavaFile.class.., więc nie uruchamiasz pliku Java, jak powiedziałeś. wykonujesz plik klasy. Pliki java to źródła, których nie można
wykonać

21

W przypadku, gdy Twoja klasa Java jest w jakimś pakiecie. Załóżmy, że Twoja klasa Java ABC.javajest obecna com.hello.programs, a następnie musisz uruchomić ją z nazwą pakietu.

Skompiluj w zwykły sposób:

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

Ale aby go uruchomić, musisz podać nazwę pakietu, a następnie nazwę swojej klasy Java:

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

19

Skompiluj plik Java, aby wygenerować klasę:

javac filename.java

Wykonaj wygenerowaną klasę:

java filename

Zauważ, że twoja „nazwa pliku” jest w rzeczywistości nazwą klasy. Program java.exe przeszuka każdy plik * .jar w poszukiwaniu klasy o tej nazwie.
Doomjunky

@Doomjunky Czy możesz to wyjaśnić, proszę? Czy to źle czy dobrze? Czy powinien być nazwany inaczej?
David Ferenczy Rogožan,

9

To jest łatwe. Jeśli plik został zapisany jako A.text, pierwszą rzeczą, którą powinieneś zrobić, to zapisać go jako A.java. Teraz jest to plik Java.

Teraz musisz otworzyć cmd i ustawić ścieżkę do pliku A.java przed skompilowaniem go. można odnieść to do tego.

Następnie możesz skompilować plik za pomocą polecenia

javac A.java

Następnie uruchom go za pomocą

java A.

Tak właśnie kompilujesz i uruchamiasz program Java w cmd. Możesz także zapoznać się z tymi materiałami, którymi są głębokie lekcje Java. Wiele rzeczy, które musisz zrozumieć w Javie, jest tam opisanych dla początkujących.


7

Możesz skompilować dowolne źródło Java za pomocą javac w wierszu poleceń; np. javac CopyFile.java. Aby uruchomić: java CopyFile. Możesz również skompilować wszystkie pliki Java za pomocą javac * .java, o ile znajdują się one w tym samym katalogu

Jeśli masz problem związany z „nie można znaleźć lub załadować głównej klasy”, być może nie masz jre na swojej ścieżce. Spójrz na to pytanie: Nie można znaleźć lub załadować klasy głównej


7

Zakładając, że plik nazywa się „CopyFile.java”, wykonaj następujące czynności:

javac CopyFile.java
java -cp . CopyFile

Pierwszy wiersz kompiluje kod źródłowy w wykonywalny kod bajtowy. Drugi wiersz wykonuje go, najpierw dodając bieżący katalog do ścieżki klasy (na wszelki wypadek).


3
mycomputer: bin user $ java -cp. Błąd Main.class: Nie można znaleźć lub załadować głównej klasy Main.class
chrips


4

W systemie Windows 7 musiałem wykonać następujące czynności:

szybki sposób

  1. Zainstaluj JDK http://www.oracle.com/technetwork/java/javase/downloads
  2. w systemie Windows przejdź do „C: \ Program Files \ Java \ jdk1.8.0_91 \ bin” (lub gdziekolwiek zainstalowana jest najnowsza wersja JDK), przytrzymaj wciśnięty klawisz Shift i kliknij prawym przyciskiem myszy pusty obszar w oknie i „otwórz okno poleceń tutaj ”, a to zapewni wiersz poleceń i dostęp do wszystkich narzędzi BIN. „javac” nie jest domyślnie w zmiennej środowiskowej PATH systemu Windows.
  3. Postępuj zgodnie z powyższymi komentarzami na temat kompilowania pliku („javac MyFile.java”, a następnie „java MyFile”) https://stackoverflow.com/a/33149828/194872

długa droga

  1. Zainstaluj JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Po instalacji edytuje zmienną środowiskową PATH systemu Windows i dodaje do ścieżki C: \ ProgramData \ Oracle \ Java \ javapath. W tym folderze znajdują się dowiązania symboliczne do kilku plików wykonywalnych Java, ale „javac” NIE jest jednym z nich, więc podczas próby uruchomienia „javac” z wiersza poleceń systemu Windows generuje błąd.
  3. Edytowałem ścieżkę: Panel sterowania -> System -> zakładka Zaawansowane -> przycisk „Zmienne środowiskowe ...” -> przewiń w dół do „Ścieżki”, zaznacz i edytuj -> zastąpiłem „C: \ ProgramData \ Oracle \ Java \ javapath ”z bezpośrednią ścieżką do folderu BIN java„ C: \ Program Files \ Java \ jdk1.8.0_91 \ bin ”.
  4. Prawdopodobnie pęka to podczas aktualizacji instalacji JDK, ale masz teraz dostęp do wszystkich narzędzi wiersza poleceń.

  5. Postępuj zgodnie z powyższymi komentarzami na temat kompilowania pliku („javac MyFile.java”, a następnie „java MyFile”) https://stackoverflow.com/a/33149828/194872


2

wprowadź opis zdjęcia tutaj KROK 1: PIERWSZE OTWÓRZ POTWIERDZENIE POLECENIA GDZIE ZNAJDUJE SIĘ PLIK. (kliknięcie prawym przyciskiem myszy podczas Shift)
KROK 2: NALEŻY WYKORZYSTAĆ NASTĘPUJĄCE POLECENIA. (powiedzmy, że nazwa pliku i klasy, która ma zostać wykonana, nosi nazwę Student.java). Przykładowy program znajduje się w tle obrazu.

     javac Student.java
     java Student

wprowadź opis zdjęcia tutaj


1

Począwszy od Java 9, JDK zawiera jshellJava REPL.

Zakładając, że binkatalog JDK 9+ jest poprawnie dodany do ścieżki, będziesz w stanie po prostu:

  1. Uruchom jshell File.java- File.javaoczywiście Twój plik.
  2. Monit zostanie otwarty, co pozwala wywołać mainmetodę: jshell> File.main(null).
  3. Aby zamknąć monit i zakończyć sesję JVM, użyj /exit

Pełną dokumentację dla JShell można znaleźć tutaj .


1

Teraz (od JDK 9 i nowszych) możesz po prostu użyć java, aby go wykonać. Aby wykonać „Hello.java” zawierający main, można użyć: java Hello.java

Nie musisz już kompilować używając osobno używając javac.


Ta funkcja została dodana w JDK 11.
Holger
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.