How to run a java program by cmd – Stack Overflow

How to compile java programs through windows cmd

Posted August 28, 2021 by Chris Luongo in Java programming, Windows

Although many people compile Java programs within the IDE, the Windows command line terminal is a powerful compiling option.

When starting out with Java, many users get confused about compiling the code. Frequently, a programing IDE adds additional layers of confusion and complexity that complicates debugging and learning. Learning how to compile directly from within the Windows shell is an essential skill to master. These steps will walk you through installing the Java SDK and compiling your code from within the Windows terminal. These commands are case-sensitive.

In this screencast I walkthrough the required steps. Refer to the text and images below for more specific details.

1. First things first, you need to download the JDK from Oracle to have the latest version of Java.

Java JDK download

2. Follow the instructions to install the JDK. It is important to make note of the path of the JDK install.

JDK Path

3.Create a central directory to hold all your Java files. For example, I created a folder at C:java and placed my .java files and projects within this folder.

Java Folder

4. Click the Windows Start icon and search for System and hit enter. Select Advanced system settings on the left and then select Environment Variables.

Windows Environment Variables

5. Under System variables scroll down to the variable Path.

Windows 7 System Path Variable

6. Hit Edit at the beginning of the Variable value. We need to place the path of the Java compiler into Windows’s path. The compiler should be located in the JDK bin folder. For example, from the install I recorded that my bin folder was at the following location: C:Program Files (x86)Javajdk1.7.0_06bin; but your location may be different. Be sure to include a semi-colon at the end of the string you just added. Hit OK and close this.

If this is done incorrectly, you will get the following error when attempting to compile:

‘javac’ is not recognized as an internal or external command, operable program or batch file

7. Next, we need to open a terminal window or CMD shell. Click the Windows icon and search for “CMD” then hit enter. Change to the directory of your personal java files. For example, I would input cd java since that is the personal java folder I created above. Now our current directory within the CMD shell is c:java.

Java CD CMD

8. Type in javac JavaFileName.java where the “JavaFileName.java” is the name of the java file you want to compile. This file can be created with any text editor or IDE and contains your actual code. After hitting the enter key, you should see a new blank line in the CMD with nothing in it Now check within your personal Java folder. If the compile was successful, you should see a new .class file.

:/>  PC-3000 for HDD. Seagate F3. Разблокировка накопителей Rosewood. | Блог разработчиков PC-3000

How to run a java program by cmd - Stack Overflow

9. To actually run the interpreter and see output type in java YourFileName without the .java extension and your program should execute. My example simply outputs some text.

How to run a java program by cmd - Stack Overflow

How to run a java program by cmd

I finished my little app. so now i would like to see the result by command prompt. (in eclipse works well).

first step i decided (to be sure) to compile by command prompt my program:

javac appNegozio.java

i compiled without error in fact i have my files .class (all the program have just 1 class but i have some inner class and so i have more than 1 file .class)

now if i try to run my program:

java appNegozio

i have this problem on the prompt:

Exception in thread "main" java.lang.NoClassDefFoundError: appNegozio (wrong nam
    e: prgStore/appNegozio)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

but i don’t understand why… and what i have to do…

this is my code:
>

package prgStore;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SpringLayout;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class appNegozio extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    appNegozio frame = new appNegozio();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public appNegozio() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        SpringLayout sl_contentPane = new SpringLayout();
        contentPane.setLayout(sl_contentPane);

        textField = new JTextField();
        sl_contentPane.putConstraint(SpringLayout.NORTH, textField, 10, SpringLayout.NORTH, contentPane);
        sl_contentPane.putConstraint(SpringLayout.WEST, textField, 62, SpringLayout.WEST, contentPane);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        sl_contentPane.putConstraint(SpringLayout.NORTH, textField_1, 16, SpringLayout.SOUTH, textField);
        sl_contentPane.putConstraint(SpringLayout.WEST, textField_1, 0, SpringLayout.WEST, textField);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        JLabel lblNome = new JLabel("Nome");
        sl_contentPane.putConstraint(SpringLayout.NORTH, lblNome, 10, SpringLayout.NORTH, contentPane);
        sl_contentPane.putConstraint(SpringLayout.EAST, lblNome, -7, SpringLayout.WEST, textField);
        contentPane.add(lblNome);

        JLabel lblCognome = new JLabel("Cognome");
        sl_contentPane.putConstraint(SpringLayout.NORTH, lblCognome, 0, SpringLayout.NORTH, textField_1);
        sl_contentPane.putConstraint(SpringLayout.EAST, lblCognome, -6, SpringLayout.WEST, textField_1);
        contentPane.add(lblCognome);

        JButton btnSubmit = new JButton("Submit");
        btnSubmit.addActionListener(new ActionListener() {
            int a, b;
            public void actionPerformed(ActionEvent e) {
                System.out.println();
            }
        });
        sl_contentPane.putConstraint(SpringLayout.NORTH, btnSubmit, 24, SpringLayout.SOUTH, textField_1);
        sl_contentPane.putConstraint(SpringLayout.WEST, btnSubmit, 10, SpringLayout.WEST, contentPane);
        contentPane.add(btnSubmit);
    }
}

    package prgStore;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SpringLayout;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class appNegozio extends JFrame {

    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    appNegozio frame = new appNegozio();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public appNegozio() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        SpringLayout sl_contentPane = new SpringLayout();
        contentPane.setLayout(sl_contentPane);

        textField = new JTextField();
        sl_contentPane.putConstraint(SpringLayout.NORTH, textField, 10, SpringLayout.NORTH, contentPane);
        sl_contentPane.putConstraint(SpringLayout.WEST, textField, 62, SpringLayout.WEST, contentPane);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        sl_contentPane.putConstraint(SpringLayout.NORTH, textField_1, 16, SpringLayout.SOUTH, textField);
        sl_contentPane.putConstraint(SpringLayout.WEST, textField_1, 0, SpringLayout.WEST, textField);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        JLabel lblNome = new JLabel("Nome");
        sl_contentPane.putConstraint(SpringLayout.NORTH, lblNome, 10, SpringLayout.NORTH, contentPane);
        sl_contentPane.putConstraint(SpringLayout.EAST, lblNome, -7, SpringLayout.WEST, textField);
        contentPane.add(lblNome);

        JLabel lblCognome = new JLabel("Cognome");
        sl_contentPane.putConstraint(SpringLayout.NORTH, lblCognome, 0, SpringLayout.NORTH, textField_1);
        sl_contentPane.putConstraint(SpringLayout.EAST, lblCognome, -6, SpringLayout.WEST, textField_1);
        contentPane.add(lblCognome);

        JButton btnSubmit = new JButton("Submit");
        btnSubmit.addActionListener(new ActionListener() {
            int a, b;
            public void actionPerformed(ActionEvent e) {
                System.out.println();
            }
        });
        sl_contentPane.putConstraint(SpringLayout.NORTH, btnSubmit, 24, SpringLayout.SOUTH, textField_1);
        sl_contentPane.putConstraint(SpringLayout.WEST, btnSubmit, 10, SpringLayout.WEST, contentPane);
        contentPane.add(btnSubmit);
    }
}

thank you

:/>  Запуск программ из Delphi через ShellExecute (uses ShellApi) - Delphi Sources FAQ

Java source и каталоги классов

Простой Java-проект содержит один каталог, внутри которого хранятся все исходные файлы. Файлы обычно хранятся не внутри исходного каталога, а в подкаталогах, соответствующих их структуре пакета. Пакеты — это просто способ сгруппировать исходные файлы, которые принадлежат друг другу. Исходный каталог часто называют src, но это не является обязательным требованием.

Например, если вы используете инструмент сборки Maven, вы, как правило, будете использовать другую структуру каталогов, где исходный код Java хранится в каталоге src/main/java(в корневом каталоге вашего проекта).

Когда вы компилируете весь исходный код в Java, компилятор создает один файл .class для каждого файла .java. .Class содержит скомпилированную версию файла .java. Байт-код для файла .java, другими словами.

Это файлы .class, которые может выполнять виртуальная машина. Не файлы .java. Поэтому нормально отделять файлы .java от файлов .class. Обычно это делается путем указания компилятору записать файлы .class в отдельный каталог.

Этот каталог часто называют классами, но, опять же, он не является обязательным, и он зависит от того, какой инструмент сборки используете, IDE и т. д.

Выполнение скомпилированного кода

После того, как компилятор выполнит свою работу, каталог classes будет содержать скомпилированные файлы .class. Структура пакета(структура каталогов) из исходного каталога будет сохранена в каталоге классов.

Вы можете запустить любой из этих файлов .class, в котором есть метод main(). Вы можете запустить .class изнутри вашей Java IDE или из командной строки. Запуск из командной строки это выглядит так:

 "c:Program FilesJavajdk1.8.0_25binjava" -cp classes myfirstapp.MyJavaApp

Флаг -cp сообщает виртуальной машине, что все ваши классы находятся в каталоге, называемом классы. Это также называется «путь к классу»(отсюда сокращение cp).

Имя класса для запуска является последним аргументом в приведенной выше команде — часть myfirstapp.MyJavaApp. JVM должна знать полное имя класса(все пакеты плюс имя класса), чтобы определить, где находится соответствующий файл .class.

:/>  В windows time is changedate, Region и Language settingи

Когда вы запустите класс, ваша командная строка будет выглядеть примерно так(включая вывод из приложения):

D:dataprojectsmy-first-java-app>"c:Program FilesJavajdk1.8.0_25binjava"
    -cp classes myfirstapp.MyJavaApp
Hello World!

D:dataprojectsmy-first-java-app>

Обратите внимание, что в первой команде не должно быть разрыва строки. Я добавил это только для того, чтобы было легче читать.

Как выполнять команды cmd через java

каждое исполнение exec порождает новый процесс со своей собственной средой. Таким образом, ваш второй вызов никак не связан с первым. Это просто изменится своя рабочий каталог, а затем выход (т. е. это фактически no-op).

Если вы хотите составлять запросы, вам нужно будет сделать это в течение одного вызова exec. Bash позволяет указывать несколько команд в одной строке, если они разделены точками с запятой; Windows CMD может разрешить то же самое, и если нет, всегда есть пакетные сценарии.

как говорит Петр, если этот пример на самом деле чего вы пытаетесь достигнуть, вы можете выполнить такую же вещь очень более эффективно, эффектно и платформу-безопасно с следующим:

String[] filenames = new java.io.File("C:/").list();

Как компилировать и запускать программу java с помощью командной строки

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 22 человек(а).

Количество просмотров этой статьи: 47 316.

Компиляция исходного кода java

Вы можете скомпилировать исходный код Java непосредственно из вашей IDE(если вы используете IDE). Или вы можете использовать компилятор, который поставляется вместе с Java SDK. Чтобы выполнить компиляцию java кода из командной строки, сделайте следующее:

  • Откройте командную строку (cmd)
  • Перейдите в корневой каталог вашего проекта(не в исходный каталог)
  • Убедитесь, что корневой каталог проекта содержит исходный каталог и каталог классов
  • Введите команду ниже(в Windows — другие ОС будут выглядеть аналогично):
"c:Program FilesJavajdk1.8.0_25binjavac" src/myfirstapp/*.java -d classes

Эта команда выполняет javac(компилятор), которая скомпилирует код в каталоге src / myfirstapp. * . А даже точнее все файлы в данном каталоге.

Каталог myfirstapp — это пакет в корневом каталоге исходного кода src. Если у вас есть несколько пакетов в корневом каталоге, вам придется запускать компилятор несколько раз. Java IDE обрабатывает это автоматически. Так же как и инструменты для сборки, такие как Ant, Maven или Gradle.

Оставьте комментарий