Как запустить программу на Java из командной строки в Windows?


216

Я пытаюсь выполнить программу Java из командной строки в Windows. Вот мой код:

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

Я не уверен, как выполнить программу - любая помощь? Это возможно в Windows? Почему это отличается от другой среды (я думал, что JVM была однажды написать, запустить где угодно)?


33
javac CopyFile.javaа затемjava CopyFile
alfasin

Сейчас я в командной строке, нужно ли мне сохранять свои текстовые файлы в той же папке, что и программа для их запуска?
Элизабет Тернер

Какой пакет CopyFileнаходится
MadProgrammer

1
@Elizabeth Turner сначала вы должны убедиться, что вы установили JRE (Java Runtime Env) и что он доступен из каждой папки (путь к Java / Javac включен в переменную PATH env). Затем запустите команды, которые я написал выше, из той же папки, в которой находится CopyFile.java.
Альфасин

Ответы:


240

Источник: Яваиндос.

Допустим, ваш файл находится в C: \ mywork \

Запустить командную строку

C:\> cd \mywork

Это делает C: \ mywork текущим каталогом.

C:\mywork> dir

Это отображает содержимое каталога. Вы должны увидеть имя файла здесь.java среди файлов.

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

Это говорит системе, где найти программы JDK.

C:\mywork> javac filenamehere.java

Это запускает javac.exe, компилятор. Вы не должны видеть ничего, кроме следующего приглашения системы ...

C:\mywork> dir

javac создал файл filenamehere.class. Вы должны увидеть filenamehere.java и filenamehere.class среди файлов.

C:\mywork> java filenamehere

Это запускает интерпретатор Java. Затем вы должны увидеть вывод вашей программы.

Если система не может найти javac, проверьте команду set path. Если javac запускается, но вы получаете ошибки, проверьте текст Java. Если программа компилируется, но вы получаете исключение, проверьте орфографию и заглавные буквы в имени файла, имени класса и команде java HelloWorld. Ява чувствительна к регистру!


27
У меня проблема в том, что когда я пытаюсь запустить компилятор, я получаю сообщение об ошибке "не удается найти или загрузить основной класс CopyFile
Элизабет Тернер

2
Если у вас есть папка, содержащая CopyFile.class, установленная в качестве текущего каталога, просто попробуйте «java -cp. CopyFile». В противном случае java -cp FULLPATH CopyFile »
Николас Кадаукс

Как бы я создал командный файл, который компилирует и запускает код, но если он был скомпилирован раньше, просто запустите его?
Android-разработчик

2
Чего не хватает: если класс был объявлен в определенном пакете, то вы должны поместить .classфайл в соответствующую структуру каталогов. Текущий каталог - это путь к классу по умолчанию, поэтому вам не нужно устанавливать его -cp .вручную.
Артур Цайка

2
Наверняка вы должны использовать пакеты: package mypackage; затем перейдите к вашему названию проекта /. Запустите java mypackage.Main
chrips

108

Чтобы завершить ответ:

  1. Файл Java

    TheJavaFile.java
  2. Скомпилируйте файл Java в файл * .class

    javac TheJavaFile.java
    • Это создаст TheJavaFile.classфайл
  3. Выполнение файла Java

    java TheJavaFile
  4. Создание исполняемого *.jarфайла

    • У вас есть два варианта здесь -

      1. С внешним файлом манифеста:

        • Создайте файл манифеста, скажем - MANIFEST.mf

        • Файл MANIFEST - это не что иное, как явная запись основного класса

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

      2. Выполняется точкой входа:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. Чтобы запустить Jar File

    java -jar TheJavaFile.jar

5
не могли бы вы показать содержимое MANIFEST.mf, потому что, когда я пытаюсь выполнить «Исполняемый по точке входа», он говорит, что основной класс не может быть найден
Pini Cheyni

@Pini Cheyni Если ваш класс называется MainClass, то в вашем файле манифеста будет запись для Main-Class: MainClass
jkhosla

@PiniCheyni, 2 способа создания исполняемых фляг хорошо объяснены здесь. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Динеш Кумар П

в пункте 3, когда вы вызываете, это java TheJavaFileэквивалентно java TheJavaFile.class... так что вы не выполняете файл Java, как вы заявили. вы выполняете файл класса. java-файлы - это исходные файлы, которые не являются исполняемыми
user2914191

21

В случае, если ваш класс Java находится в каком-то пакете. Предположим, что ваш Java-класс ABC.javaприсутствует в com.hello.programs, а затем вам нужно запустить его с именем пакета.

Скомпилируйте его обычным способом:

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

Но чтобы запустить его, вам нужно дать имя пакета, а затем имя вашего java-класса:

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

19

Скомпилируйте файл Java для создания класса:

javac filename.java

Выполните сгенерированный класс:

java filename

Обратите внимание, что ваше «имя файла» на самом деле является именем класса. Java.exe будет искать в каждом файле * .jar класс с таким именем.
Doomjunky

@ Doomjunky Не могли бы вы объяснить это, пожалуйста? Это плохо или хорошо? Должно ли оно быть названо по-другому?
Дэвид Ференци Рогожан

9

Это просто. Если вы сохранили файл как A.text, первое, что вам нужно сделать, это сохранить его как A.java. Теперь это файл Java.

Теперь вам нужно открыть cmd и указать путь к файлу A.java перед его компиляцией. Вы можете отослать это за это.

Затем вы можете скомпилировать файл с помощью команды

javac A.java

Затем запустите его, используя

Ява А

Вот как вы компилируете и запускаете Java-программу в cmd. Вы также можете пройти этот материал, который является Java в уроках глубины. Многое, что вам нужно понять в Java, рассказано для начинающих.


7

Вы можете скомпилировать любой исходный код Java, используя javac в командной строке; например, javac CopyFile.java. Для запуска: Java CopyFile. Вы также можете скомпилировать все java-файлы, используя javac * .java, если они находятся в одном каталоге

Если у вас возникла проблема с сообщением «не удалось найти или загрузить основной класс», возможно, на вашем пути нет jre. Посмотрите на этот вопрос: не удалось найти или загрузить основной класс


7

Предполагая, что файл называется «CopyFile.java», выполните следующие действия:

javac CopyFile.java
java -cp . CopyFile

Первая строка компилирует исходный код в исполняемый байт-код. Вторая строка выполняет его, сначала добавляя текущий каталог к ​​пути к классу (на всякий случай).


3
mycomputer: bin user $ java -cp. Ошибка Main.class: не удалось найти или загрузить основной класс Main.class
chrips

5

Начиная с Java 11, javaинструмент командной строки может запускать исходный код из одного файла напрямую. например

java HelloWorld.java

Это было улучшение с JEP 330: https://openjdk.java.net/jeps/330

Подробнее об использовании и ограничениях см. Руководство по реализации Java, например, предоставленное Oracle: https://docs.oracle.com/en/java/javase/11/tools/java.html.


4

На Windows 7 мне пришлось сделать следующее:

быстрый способ

  1. Установите JDK http://www.oracle.com/technetwork/java/javase/downloads
  2. в окнах перейдите в «C: \ Program Files \ Java \ jdk1.8.0_91 \ bin» (или там, где установлена ​​последняя версия JDK), удерживайте нажатой клавишу «Shift» и щелкните правой кнопкой мыши пустую область в окне и сделайте «открыть» окно команд здесь ", и это даст вам командную строку и доступ ко всем инструментам BIN. "javac" не является по умолчанию в переменной среды PATH системы Windows.
  3. Следуйте приведенным выше комментариям о том, как скомпилировать файл («javac MyFile.java», затем «java MyFile») https://stackoverflow.com/a/33149828/194872

долгий путь

  1. Установите JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. После установки в редактирует переменную среды Windows PATH и добавляет следующий путь к пути C: \ ProgramData \ Oracle \ Java \ javapath. В этой папке есть символические ссылки на несколько исполняемых файлов Java, но «javac» НЕ является одним из них, поэтому при попытке запустить «javac» из командной строки Windows выдает ошибку.
  3. Я отредактировал путь: Панель управления -> Система -> вкладка Дополнительно -> кнопка «Переменные среды ...» -> прокрутите вниз до «Путь», выделите и отредактируйте -> заменил «C: \ ProgramData \ Oracle \ Java \» javapath "с прямым путем к папке Java BIN" C: \ Program Files \ Java \ jdk1.8.0_91 \ bin ".
  4. Скорее всего, это сломается, когда вы обновите установку JDK, но теперь у вас есть доступ ко всем инструментам командной строки.

  5. Следуйте приведенным выше комментариям о том, как скомпилировать файл («javac MyFile.java», затем «java MyFile») https://stackoverflow.com/a/33149828/194872


2

введите описание изображения здесь ШАГ 1: ВПЕРВЫЕ ОТКРЫТЬ КОМАНДУ ПОДСКАЗКА, ГДЕ НАХОДИТСЯ ВАШ ФАЙЛ. (щелкните правой кнопкой мыши, удерживая нажатой клавишу Shift)
ШАГ 2: ИСПОЛЬЗУЙТЕ СЛЕДУЮЩИЕ КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ. (Допустим, имя файла и имя класса, который нужно выполнить, называется Student.java). Пример программы находится на заднем плане рисунка.

     javac Student.java
     java Student

введите описание изображения здесь


1

Начиная с Java 9, JDK включает в jshellсебя Java REPL.

Предполагая, что binкаталог JDK 9+ правильно добавлен к вашему пути, вы сможете просто:

  1. Run jshell File.java- File.javaбыть вашим файлом, конечно.
  2. Контекстное откроется, что позволяет назвать mainметод: jshell> File.main(null).
  3. Чтобы закрыть приглашение и завершить сеанс JVM, используйте /exit

Полную документацию по JShell можно найти здесь .


1

Теперь (начиная с JDK 9) вы можете просто использовать java для выполнения этого. Чтобы выполнить «Hello.java», содержащий main, можно использовать: java Hello.java

Вам больше не нужно компилировать, используя отдельно, используя javac.


Эта функция была добавлена ​​в JDK 11.
Holger
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.