Як запустити програму 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

Зараз я перебуваю в командному рядку, чи потрібно зберігати мої файли txt у тій же папці, що і програма для виклику?
Елізабет Тернер

Який пакунок CopyFileзнаходиться
MadProgrammer

1
@Elizabeth Turner спочатку ви повинні переконатися, що ви встановили JRE (Java Runtime Env) і що вона доступна у кожній папці (шлях до Java / Javac включений у змінну PATH env). Потім запустіть команди, які я писав вище, з тієї ж папки, в якій знаходиться CopyFile.java.
alfasin

Відповіді:


240

Джерело: javaindos.

Скажімо, ваш файл знаходиться в C: \ mywork \

Запустіть командний рядок

C:\> cd \mywork

Це робить C: \ mywork поточним каталогом.

C:\mywork> dir

Тут відображається вміст каталогу. Ви повинні побачити filenamehere.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, перевірте встановлену команду шляху. Якщо javac працює, але ви отримуєте помилки, перевірте текст вашої Java. Якщо програма компілюється, але ви отримаєте виняток, перевірте написання та написання великої літери у назві файла та назви класу та команді java HelloWorld. Java відрізняється від регістру!


27
Проблема, яка виникає у мені, коли я намагаюся запустити компілятор, я отримую помилку "не вдалося знайти або завантажити основний клас CopyFile
Елізабет Тернер

2
Якщо у вас в поточному каталозі встановлена ​​папка, що містить CopyFile.class, просто спробуйте "java -cp. CopyFile" В іншому випадку "java -cp FULLPAT CopyFile"
Nicholas Kadaeux

Як я можу створити пакетний файл, який компілює і запускає код, але якщо він був компільований раніше, просто запустіть його?
андроїд розробник

2
Чого не вистачає: якщо клас був оголошений у певному пакеті, тоді ви повинні помістити .classфайл у відповідну структуру каталогу. Поточний каталог - це класний шлях за замовчуванням, тому не потрібно встановлювати його -cp .вручну.
Артур Czajka

2
Напевно, ви повинні використовувати пакети: пакет mypackage; потім перейдіть до свого імені проекту /. Запустити java
mypackage.Main

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

    java -jar TheJavaFile.jar

5
Ви можете, будь ласка, показати вміст MANIFEST.mf, тому що, коли я намагаюся "Виконано за допомогою пункту вступу", він каже, що основного класу неможливо знайти
Pini Cheyni

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

@PiniCheyni, Тут добре пояснено два способи створення виконуваних банок. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Дінеш Кумар P

у пункті 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 A

Отже, так ви компілюєте та запускаєте програму 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
мій комп'ютер: 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), утримуйте клавішу зсуву та клацніть правою кнопкою миші на порожній області у вікні та зробіть "відкрити командне вікно тут ", і це дасть вам командний рядок та доступ до всіх інструментів BIN. "javac" за замовчуванням не є в системі Windows змінною середовища PATH.
  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 "прямим шляхом до папки BIN java" 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. Виконати jshell File.java-File.java звичайно ваш файл.
  2. Відкриється підсказка, яка дозволяє вам зателефонувати за mainметодом:jshell> File.main(null) .
  3. Щоб закрити підказку і закінчити сеанс JVM, використовуйте /exit

Повну документацію для JShell можна знайти тут .


1

Тепер (з JDK 9 далі) ви можете просто використовувати java, щоб виконати це. Для того, щоб виконати "Hello.java", що містить основне, можна скористатися: java Hello.java

Вам більше не потрібно компілювати, використовуючи окремо, використовуючи javac.


Ця функція була додана в JDK 11.
Holger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.