Java запуск из командной строки windows


Загрузить PDF


Загрузить PDF

Хотя многие среды программирования позволяют компилировать и запускать программы, их также можно скомпилировать и запустить с помощью командной строки. У Windows и Mac есть свои собственные версии командной строки, на Mac OS она называется Терминал. Процесс компиляции и запуска для Windows и для Mac практически идентичен.

  1. Изображение с названием Compile & Run Java Program Using Command Prompt Step 1

    1

    Сохраните программу. Создав программу на Java с помощью текстового редактора, такого как NotePad, сохраните ее с расширением .java. Название файла, конечно же, может быть любым. В этом руководстве в качестве названия файла мы будем использовать «filename» (имя файла).

    • Чтобы сохранить файл как .java, после имени файла напишите .java и выберите Все файлы в выпадающим меню выбора расширений.
    • Запомните, куда вы сохранили файл.
    • Если вы не знаете, как написать программу на Java, поищите дополнительное руководство об этом. Однако, чтобы научиться компилировать и запускать программы, можно использовать любую программу, написанную на Java.
  2. Изображение с названием Compile & Run Java Program Using Command Prompt Step 2

    2

    Откройте Командную строку/Терминал. Доступ к командной строке немного отличается для Mac и Windows.

    • Windows: нажмите Пуск, затем введите cmd. Чтобы открыть Командную строку, нажмите Enter.
    • Mac: в Finder нажмите на вкладку Переход, выберите Программы, затем – Утилиты и кликните по Терминал.
  3. Изображение с названием Compile & Run Java Program Using Command Prompt Step 3

    3

  4. Изображение с названием Compile & Run Java Program Using Command Prompt Step 4

    4

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

    • Например, если вы сейчас находитесь в каталоге C:\Users\Bob\Project и хотите его изменить на C:\Users\Bob\Project\TitanProject , введите cd TitanProject и нажмите Enter.
    • Если вы введете dir и нажмете Enter, то сможете увидеть список файлов, которые находятся в этом каталоге.
  5. Изображение с названием Compile & Run Java Program Using Command Prompt Step 5

    5

    Скомпилируйте программу. Как только вы окажетесь в нужном каталоге, можете скомпилировать программу – введите в командную строку javac filename.java и нажмите enter.

    • Если в вашей программе есть какие-либо ошибки или возникли трудности с компиляцией, командная строка вас об этом предупредит.
    • Для получения дополнительной справки ознакомьтесь с нашей статьей о том, как исправить ошибки компилятора в Java.
  6. Изображение с названием Compile & Run Java Program Using Command Prompt Step 6

    6

    Запустите программу. Введите java filename и нажмите Enter. Конечно же, замените «filename» именем вашего файла.

    • После нажатия Enter ваша программа должна запуститься. Если вы получили сообщение об ошибке или ваша программа не работает, используйте метод устранения ошибок.

    Реклама

  1. Изображение с названием Compile & Run Java Program Using Command Prompt Step 7

    1

    Установите путь. Если вы используете простую программу, файлы которой расположены в одном каталоге, вероятно, вам не нужно этого делать. Однако, если вы используете более сложную программу с файлами в нескольких каталогах, вам нужно будет указать компьютеру, где искать эти файлы.

    • Windows: в командной строке введите java -version и нажмите Enter. Основываясь на версии Java, указанной в первой строке, введите в командной строке set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin и нажмите Enter. Замените jdk1.5.0_09 версией Java, которая у вас установлена.

      • Вводите эту команду, когда будете находиться в каталоге с вашей программой Java.
    • Mac: чтобы убедиться, что у вас установлен Java, введите в терминале команду /usr/libexec/java_home -v 1.7 и нажмите Enter. Затем введите echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile и нажмите Enter. После этого перезапустите терминал.

Советы

  • Опять же, важно, чтобы вы загрузили и установили Java JDK на свой компьютер. Ссылка для загрузки: http://www.oracle.com/technetwork/java/javase/downloads/index.html.

Реклама

Об этой статье

Эту страницу просматривали 67 916 раз.

Была ли эта статья полезной?

You can actually run Java program as you would shell or python scripts without manually compile the Java file, as described in
JEP 330. That is available since JDK 11.

If you create a file testing, and put the following you should be able to run it as command testing. You need to make it executable in Linux and Mac OSX with chmod +x testing.

    #!/usr/bin/env java --source 11
    public class Test {
        public static void main(String [] args) {
            System.out.println("Hello world!");
            System.exit(0);
        }
    }

You are not allowed to use the file extension .java in the previous example.

    $ chmod +x testing
    $ ./testing
    Hello world!
    $

But you can still execute if it is was name Test.java without the shebang «#!» prefix like this:

    public class Test {
        public static void main(String [] args) {
            System.out.println("Hello again!");
            System.exit(0);
        }
    }

Then execute the file Test.java with following command:

    $ java Test.java
    Hello again!
    $

So this works as long as you have a new enough Java compiler in the path, check with java -version. More information in this blog.

Время на прочтение
11 мин

Количество просмотров 630K

Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.

От простого к …

Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: src и bin. В первой содержатся исходные коды, во второй — результат компиляции. В данных папках будет структура каталогов, зависящая от пакетов.

Один файл

Можно сделать и без лишних папок.
Берем сам файл HelloWorld.java.

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

Переходим в каталог, где лежит данный файл, и выполняем команды.

javac HelloWorld.java

В данной папке появится файл HelloWorld.class. Значит программа скомпилирована. Чтобы запустить

java -classpath . HelloWorld

Отделяем бинарные файлы от исходников

Теперь сделаем тоже самое, но с каталогами. Создадим каталог HelloWorld и в нем две папки src и bin.
Компилируем

javac -d bin src/HelloWorld.java

Здесь мы указали, что бинарные файлы будут сохраняться в отдельную папку bin и не путаться с исходниками.

Запускаем

java -classpath ./bin HelloWorld

Используем пакеты

А то, вдруг, программа перестанет быть просто HelloWorld-ом. Пакетам лучше давать понятное и уникальное имя. Это позволит добавить данную программу в другой проект без конфликта имен. Прочитав некоторые статьи, можно подумать, что для имени пакета обязательно нужен домен. Это не так. Домены — это удобный способ добиться уникальности. Если своего домена нет, воспользуйтесь аккаунтом на сайте (например, ru.habrahabr.mylogin). Он будет уникальным. Учтите, что имена пакетов должны быть в нижнем регистре. И избегайте использования спецсимволов. Проблемы возникают из-за разных платформ и файловых систем.

Поместим наш класс в пакет с именем com.qwertovsky.helloworld. Для этого добавим в начало файла строчку

package com.qwertovsky.helloworld;

В каталоге src создадим дополнительные каталоги, чтобы путь к файлу выглядел так: src/com/qwertovsky/helloworld/HelloWorld.java.
Компилируем

javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java

В каталоге bin автоматически создастся структура каталогов как и в src.

	HelloWorld
	'---bin
	'   '---com
	'       '---qwertovsky
	'          '---helloworld
	'             '---HelloWorld.class
	'---src
	    '---com
	        '---qwertovsky
	            '---helloworld
	                '---HelloWorld.java	

Запускаем

java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Если в программе несколько файлов

Изменим программу.

HelloWorld.java
package com.qwertovsky.helloworld;

public class HelloWorld
{
	public static void main(String[] args)
	{
		int a=2;
		int b=3;
		Calculator calc=new Calculator();
		System.out.println("Hello World!");
		System.out.println(a+"+"+b+"="+calc.sum(a,b));
	}
}

Calculator.java
package com.qwertovsky.helloworld;
	 
import com.qwertovsky.helloworld.operation.Adder;
	 
public class Calculator
{
	public int sum(int... a)
	{
		Adder adder=new Adder();
		for(int i:a)
		{
			adder.add(i);
		}
		return adder.getSum();
	}
}

Adder.java
package com.qwertovsky.helloworld.operation;
	 
public class Adder
{
	private int sum;
		
	public Adder()
	{
		sum=0;
	}
		
	public Adder(int a)
	{
		this.sum=a;
	}

	public void add(int b)
	{
		sum+=b;
	}
		
	public int getSum()
	{
		return sum;
	}
}

Компилируем

javac  -d bin src/com/qwertovsky/helloworld/HelloWorld.java
	src\com\qwertovsky\helloworld\HelloWorld.java:9: cannot find symbol
	symbol  : class Calculator
	location: class com.qwertovsky.helloworld.HelloWorld
		        Calculator calc=new Calculator();
		        ^
	src\com\qwertovsky\helloworld\HelloWorld.java:9: cannot find symbol
	symbol  : class Calculator
	location: class com.qwertovsky.helloworld.HelloWorld
		        Calculator calc=new Calculator();
		                            ^
	2 errors

Ошибка возникла из-за того, что для компиляции нужны файлы с исходными кодами классов, которые используются (класс Calculator). Надо указать компилятору каталог с файлами с помощью ключа -sourcepath.
Компилируем

javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java

Запускаем

java -classpath ./bin com.qwertovsky.helloworld.HelloWorld
	Hello Word
	2+3=5

Если удивляет результат

Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.

javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java

Запускаем отладчик

jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld
	Initializing jdb ...
	>

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

> stop at com.qwertovsky.helloworld.Calculator:9
	Deferring breakpoint com.qwertovsky.helloworld.Calculator:9.
	It will be set after the class is loaded.

Запускаем на выполнение.

> run
	run com.qwertovsky.helloworld.HelloWorld
	Set uncaught java.lang.Throwable
	Set deferred uncaught java.lang.Throwable
	>
	VM Started: Set deferred breakpoint com.qwertovsky.helloworld.Calculator:9
	Hello World!

	Breakpoint hit: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0
	9               Adder adder=new Adder();

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

main[1] list
	5    public class Calculator
	6    {
	7       public int sum(int... a)
	8       {
	9 =>            Adder adder=new Adder();
	10              for(int i:a)
	11              {
	12                      adder.add(i);
	13              }
	14              return adder.getSum();

Узнаем, что из себя представляет переменная а.

main[1] print a
	 a = instance of int[2] (id=340)
main[1] dump a
	 a = {
	2, 3
	}
main[1] stop at com.qwertovsky.helloworld.operation.Adder:19
	Deferring breakpoint com.qwertovsky.helloworld.operation.Adder:19.
	It will be set after the class is loaded.

Продолжим исполнение.

main[1] cont
	> Set deferred breakpoint com.qwertovsky.helloworld.operation.Adder:19

	Breakpoint hit: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0
	19              sum+=b;

main[1] list
	15      }
	16
	17      public void add(int b)
	18      {
	19 =>           sum+=b;
	20      }
	21
	22      public int getSum()
	23      {
	24              return sum;
main[1] print sum
	 sum = 0
main[1] print b
	 b = 2

Выполним код в текущей строке и увидим, что sum стала равняться 2.

main[1] step
	>
	Step completed: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10
	20      }

main[1] print sum
	 sum = 2

Поднимемся из класса Adder в вызвавший его класс Calculator.

main[1] step up
	>
	Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36
	10              for(int i:a)

Удаляем точку прерывания

main[1] clear com.qwertovsky.helloworld.operation.Adder:19
	Removed: breakpoint com.qwertovsky.helloworld.operation.Adder:19
main[1] step
	>
	Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=12 bci=30
	12                      adder.add(i);

Можно избежать захода в методы, используя команду next.

main[1] next
	>
	Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36
	10              for(int i:a)

main[1] next
	>
	Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=14 bci=42
	14              return adder.getSum();

Проверяем значение выражения и завершаем выполнение.

main[1] eval adder.getSum()
	 adder.getSum() = 5
main[1] cont
	> 2+3=5

	The application exited

Хорошо бы протестировать

Используем JUnit.

package com.qwertovsky.helloworld;
 
import static org.junit.Assert.*;
 
import java.util.Arrays;
import java.util.Collection;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;

@RunWith(value=org.junit.runners.Parameterized.class)
public class TestCalculator
{
	int expected;
	int[] arg;
	
	@Parameters
	public static Collection<int[][]> parameters()
	{
		
		return Arrays.asList(new int[][][]{
				{{4}, {2, 2}}
				,{{-1},{4, -5}}
				,{{0},{0,0,0}}
				,{{0},{}}
				});
	}
	
	public TestCalculator(int[] expected, int[] arg)
	{
		this.expected=expected[0];
		this.arg=arg;
	}
	
	@Test
	public void testSum()
	{
		Calculator c=new Calculator();
		assertEquals(expected,c.sum(arg));
	}
}

Компилируем

mkdir test_bin
javac  -classpath lib/path/junit-4.8.2.jar  -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java

Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.

java  -classpath lib/path/junit-4.8.2.jar:./test_bin  org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator
	JUnit version 4.8.2
	....
	Time: 0,031

	OK (4 tests)

Создадим библиотеку

Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.

	HelloWorld
	'---bin
	'---src
	    '---com
	        '---qwertovsky
	            '---helloworld
	                '---HelloWorld.java	
	Сalculator
	'---bin
	'---src
	'   '---com
	'       '---qwertovsky
	'           '---calculator
	'               '---Calculator.java	
	'               '---operation
	'                   '---Adder.java
	'---test
	    '---com
	        '---qwertovsky
	            '---calculator
	                '---TestCalculator.java
	

Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку

import com.qwertovsky.calculator.Calculator;

Компилируем.

cd Calculator
javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java

Делаем архив jar

jar cvf calculator.jar -C bin .
	added manifest
	adding: com/(in = 0) (out= 0)(stored 0%)
	adding: com/qwertovsky/(in = 0) (out= 0)(stored 0%)
	adding: com/qwertovsky/calculator/(in = 0) (out= 0)(stored 0%)
	adding: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(deflated 24%)
	adding: com/qwertovsky/calculator/operation/(in = 0) (out= 0)(stored 0%)
	adding: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299)(deflated 32%)

С помощью ключа -C мы запустили программу в каталоге bin.

Надо узнать, что у библиотеки внутри

Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.

javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator
	Compiled from "Calculator.java"
	public class com.qwertovsky.calculator.Calculator extends java.lang.Object{
	public com.qwertovsky.calculator.Calculator();
	  Code:
	   0:	aload_0
	   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
	   4:	return

	public int sum(int[]);
	  Code:
	   0:	new	#2; //class com/qwertovsky/calculator/operation/Adder
	   3:	dup
	   4:	invokespecial	#3; //Method com/qwertovsky/calculator/operation/Adder."<init>":()V
	   7:	astore_2
	   8:	aload_1
	   9:	astore_3
	   10:	aload_3
	   11:	arraylength
	   12:	istore	4
	   14:	iconst_0
	   15:	istore	5
	   17:	iload	5
	   19:	iload	4
	   21:	if_icmpge	42
	   24:	aload_3
	   25:	iload	5
	   27:	iaload
	   28:	istore	6
	   30:	aload_2
	   31:	iload	6
	   33:	invokevirtual	#4; //Method com/qwertovsky/calculator/operation/Adder.add:(I)V
	   36:	iinc	5, 1
	   39:	goto	17
	   42:	aload_2
	   43:	invokevirtual	#5; //Method com/qwertovsky/calculator/operation/Adder.getSum:()I
	   46:	ireturn

	}

Из результата видно, что класс содержит кроме пустого конструктора, ещё один метод sum, внутри которого в цикле вызывается метод add класса Adder. По завершении метода sum, вызывается Adder.getSum().
Без ключа -c программа выдаст только список переменных и методов (если использовать -private, то всех).

javap -private  -classpath calculator.jar com.qwertovsky.calculator.operation.Adder
	Compiled from "Adder.java"
	public class com.qwertovsky.calculator.operation.Adder extends java.lang.Object{
	    private int sum;
	    public com.qwertovsky.calculator.operation.Adder();
	    public com.qwertovsky.calculator.operation.Adder(int);
	    public void add(int);
	    public int getSum();
	}

Лучше снабдить библиотеку документацией

Изменим для этого класс калькулятора.

package com.qwertovsky.calculator;

import com.qwertovsky.calculator.operation.Adder;

/**
 * Калькулятор, который умеет складывать
 * @author Qwertovsky
 * 
 */
public class Calculator
{
	/**
	 * Определение суммы слагаемых
	 * @param a массив слагаемых
	 * @return сумма
	 */
	public int sum(int... a)
	{
		Adder adder=new Adder();
		for(int i:a)
		{
			adder.add(i);
		}
		return adder.getSum();
		
	}
}

Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.

mkdir doc	
javadoc -d doc -charset utf-8  -sourcepath src -author -subpackages com.qwertovsky.calculator

В результате получиться следующее
image

Можно подписать jar-архив

Если требуется подписать свою библиотеку цифровой подписью, на помощь придут keytool и jarsigner.
Генерируем подпись.

keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore
	Enter keystore password:
	Re-enter new password:
	What is your first and last name?
	  [Unknown]:  Valery Qwertovsky
	What is the name of your organizational unit?
	  [Unknown]:  Qwertovsky
	What is the name of your organization?
	  [Unknown]:  Qwertovsky
	What is the name of your City or Locality?
	  [Unknown]:  Tver
	What is the name of your State or Province?
	  [Unknown]:  Tverskaya obl.
	What is the two-letter country code for this unit?
	  [Unknown]:  RU
	Is CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Tver, ST=Tverskaya	obl., C=RU correct?
	  [no]:  y

	Enter key password for <qwertokey>
			(RETURN if same as keystore password):
	Re-enter new password:

Генерируем Certificate Signing Request (CSR)

keytool -certreq -file path/to/qwertokey.crt -alias qwertokey -keystore path/to/qwerto.keystore

Содержимое полученного файла отправляем в центр сертификации. От центра сертификации получаем сертификат. Сохраняем его в файле (например, qwertokey.cer) и импортируем в хранилище

keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -file path/to/qwertokey.cer

Подписываем jar-архив

jarsigner -keystore path/to/qwerto.keystore calculator.jar qwertokey

Файл qwertokey.cer отправляем всем, кто хочет проверить архив. Проверяется он так

jarsigner -verify -verbose -certs -keystore path/to/qwerto.keystore calculator.jar

Использование библиотеки

Есть программа HelloWorld, которая использует библиотечный класс Calculator. Чтобы скомпилировать и запустить программу, нужно присоединить библиотеку.
Компилируем

cd HelloWorld
javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java

Запускаем

java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld

Собираем программу

Это можно сделать по-разному.

Первый способ

cd HelloWorld
echo main-class: com.qwertovsky.helloworld.HelloWorld>manifest.mf
echo class-path: lib/calculator.jar >>manifest.mf
mkdir lib
cp path/to/calculator.jar lib/calculator.jar
jar -cmf manifest.mf helloworld.jar  -C bin .

Здесь есть тонкости.
В строке

main-class: com.qwertovsky.helloworld.HelloWorld

не должно быть пробелов в конце.
Вторая тонкость описана в [3]: в этой же строке должен стоять перенос на следующую строку. Это если манифест помещается в архив сторонним архиватором.
Программа jar не включит в манифест последнюю строку из манифеста, если в конце не стоит перенос строки.
Ещё момент: в манифесте не должно быть пустых строк между строками. Будет выдана ошибка «java.io.IOException: invalid manifest format».

При использовании команды echo надо следить только за пробелом в конце строки с main-class.

Второй способ

cd HelloWorld
echo class-path: lib/calculator.jar >manifest.mf
mkdir lib
cp path/to/calculator.jar lib/calculator.jar
jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld  helloworld.jar  -C bin .

В данном способе избегаем ошибки с пробелом в main-class.

Третий способ

cd HelloWorld
mkdir lib
cd lib
jar -xvf path/to/calculator.jar com/
	  created: com/
	  created: com/qwertovsky/
	  created: com/qwertovsky/calculator/
	 inflated: com/qwertovsky/calculator/Calculator.class
	  created: com/qwertovsky/calculator/operation/
	 inflated: com/qwertovsky/calculator/operation/Adder.class

cd ..
cp  -r bin/* lib/
jar -cef com.qwertovsky.helloworld.HelloWorld  helloworld.jar  -C lib .
rm -r lib

Включили код нужной библиотеки в исполняемый файл.

Запуск исполняемого jar-файла

Файл calculator.jar исполняемым не является. А вот helloworld.jar можно запустить.
Если архив был создан первыми двумя способами, то рядом с ним в одном каталоге должна находится папка lib с файлом calculator.jar. Такие ограничения из-за того, что в манифесте в class-path указан путь относительно исполняемого файла.

cd Calculator
ls ../HelloWorld/lib
	calculator.jar
java -jar ../HelloWorld/helloworld.jar

При использовании третьего способа нужные библиотеки включаются в исполняемый файл. Держать рядом нужные библиотеки не требуется. Запускается аналогично.

java -jar ../HelloWorld/helloworld.jar

Как быть с приложениями JavaEE

Аналогично. Только библиотеки для компиляции нужно брать у сервера приложений, который используется. Если я использую JBoss, то для компиляции сервлета мне нужно будет выполнить примерно следующее

javac -classpath path/to/jboss/common/lib/jboss-servlet*.jar  -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java

Структура архива JavaEE-приложения должна соответствовать определенному формату. Например

	my.ear
	`---META-INF
	|   `---manifest.mf
	`---lib
	|   `---mylib.jar
	`---my.war
	|   `---META-INF
	|   |   `---manifest.mf
	|   `---WEB-INF
	|   |   `---lib
	|   |   |   `---myweblib.jar
	|   |   `---classes
	|   |   |   `---com
	|   |   |       `---...
	|   |   `---web.xml
	|   `---index.html
	|   `---<остальное веб-содержимое (страницы, изображения)>
	`---myejb.jar

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

Надеюсь, данная статья станет для кого-нибудь шпаргалкой для работы с Java в командной строке. Данные навыки помогут понять содержание и смысл Ant-скриптов и ответить на собеседовании на более каверзные вопросы, чем «Какая IDE Вам больше нравится?».

Ещё почитать

1. Elliotte Rusty Harold. «Рекомендации по управлению classpath в UNIX и Mac OS X»
2. Elliotte Rusty Harold. «Рекомендации по управлению classpath в Windows»
3. Евгений Матюшкин aka Skipy. «Ликбез»
4. Lesson: Packaging Programs in JAR Files
5. Brian Goetz. «Теория и практика Java: Мне нужно задокументировать ЭТО?»
6. Евгений Матюшкин aka Skipy. «Создание собственных тегов javadoc»
7. Создание и использование архивов Java
8. Sun Java Signing
9. javac — Java programming language compiler
10. java — the Java application launcher
11. jdb — The Java Debugger
12. javap — The Java Class File Disassembler
13. javadoc — The Java API Documentation Generator
14. jarsigner — JAR Signing and Verification Tool
15. jar — The Java Archive Tool
16. keytool — Key and Certificate Management Tool


Download Article


Download Article

While many programming environments will allow you to compile and run a program within the environment, you can also compile and run using Command Prompt. Both Windows and Mac have their own versions of Command Prompt, although it is technically called Terminal on the Mac OS. The process is essentially identical for Windows and Mac.

  1. Image titled Compile & Run Java Program Using Command Prompt Step 1

    1

    Save the program. After using a text editor, such as NotePad, to create your Java program, save the program with a .java extension. Of course, the file name can be anything. For the purposes of this tutorial, «filename» will be used as a placeholder for your file name.

    • To ensure that your file is saved as a .java file, be sure to write .java after the file name, and select All Files from the dropdown extension menu.
    • Make note of where you saved the file on your system.
    • If you are unsure of how to write a program in Java, check out our tutorial on how to program in Java. For the purposes of learning how to compile and run a program, though, you can use any sort of Java program.
  2. Image titled Compile & Run Java Program Using Command Prompt Step 2

    2

    Open Command Prompt/Terminal. Accessing the command line differs slightly for Mac and Windows.

    • Windows: Press Home, then type cmd. Press Enter to open the Command Prompt.
    • Mac: In Finder, press the Go tab, select Applications, select Utilities, then select Terminal.

    Advertisement

  3. Image titled Compile & Run Java Program Using Command Prompt Step 3

    3

    Check that Java is installed. Type java -version into your command line. If java is installed, you will see a message stating what version of Java is currently installed.

    • If not, you may need to install the Java Development Kit from their website. It is free and can be found at this link: http://www.oracle.com/technetwork/java/javase/downloads/index.html.
  4. Image titled Compile & Run Java Program Using Command Prompt Step 4

    4

    Navigate to the correct folder. Use the command cd followed by the directory name to change your working directory.

    • For example, if you were operating in C:\Users\Bob\Project and wanted to get to C:\Users\Bob\Project\TitanProject , enter in cd TitanProject and press Enter.
    • You can see a list of what is in your current directory by typing dir and pressing Enter.
  5. Image titled Compile & Run Java Program Using Command Prompt Step 5

    5

    Compile the program. Once you are in the correct directory, you can compile the program by typing javac filename.java into the command line and pressing enter.

    • If you have any errors in your program, or if there is difficultly compiling, the command prompt will notify you.
    • Check out our article about how to fix compiler errors in Java for more help.
  6. Image titled Compile & Run Java Program Using Command Prompt Step 6

    6

    Run the program. Enter in java filename and press Enter. Of course, replace «filename» with whatever the name of your file actually is.

    • After pressing Enter, your program should run. If you receive an error, or if your program fails to run in any way, refer to the troubleshooting method.
  7. Advertisement

  1. Image titled Compile & Run Java Program Using Command Prompt Step 7

    1

    Set your path. If you are running a simple program with all of the files in the same directory, you will probably not need to do this. However, if you are running a more complex program with files in multiple directories, you will need to tell the computer where to look for these files.

    • Windows: Type java -version into the command prompt and press Enter. Based off the version of Java displayed on the first line, type in set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin to the command prompt and press Enter. Substitute jdk1.5.0_09 with whatever version of Java you have installed.

      • Be sure you are entering in this command while in the directory containing your Java project.
    • Mac: Type /usr/libexec/java_home -v 1.7 into the terminal and press Enter to ensure Java is installed on your system. Then, type echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile into the terminal and press Enter. Restart the terminal afterwards.

Add New Question

  • Question

    What would I do if I type in the Java filename.java and it is not running? The code written in Notepad is correct.

    Community Answer

    It is okay. You have to write for compiling : javac filename.java and for running: just filename.

  • Question

    How can I compile using CMD?

    Community Answer

    Once you are in the correct directory, you can compile the program by typing «javac filename.java» into the command line and pressing enter.

  • Question

    How can I hack a computer using the command prompt?

    Community Answer

    You can’t without installing other things. CMD is NOT for hacking and should never be used for it.

See more answers

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

About This Article

Article SummaryX

1. Type ″cmd″ into Windows search.
2. Right-click Command prompt.
3. Click Run as administrator.
4. Type ″cd \path\to\java\program″.
5. Press Enter.
6. Type ″javac -filename.java″.
7. Press Enter.
8. Type ″java filename.java″.
9. Press Enter.

Did this summary help you?

Thanks to all authors for creating a page that has been read 960,490 times.

Is this article up to date?

Последнее обновление: 22.11.2022

Итак, после установки JDK создадим первое приложение на языке Java. Что необходимо для создания программы на Java? Прежде всего нам надо написать код программы, и для этого нужен текстовый редактор.
Можно использовать любой текстовый редактор, например, Notepad++.

И чтобы превратить код программы в исполняемое приложение необходим компилятор. После установки JDK все файлы по умолчанию помещаются в каталог C:\Program Files\Java\jdk-[номер_версии] (при использовании ОС Windows).
В моем случае это каталог C:\Program Files\Java\jdk-19. Если мы откроем в нем подкаталог bin, то мы сможем увидеть в нем ряд утилит.
Нас прежде всего интересует утилита компилятора javac. Чтобы скомпилировать класс программы, нам надо передать ее код этому компилятору.

Компилятор javac в Java

Также следует отметить другую утилиту из этой папки — java.exe, которая позволяет запускать скомпилированную программу.

Итак, создадим на жестком диске какой-нибудь каталог, в котором будут располагаться файлы с исходным кодом на языке Java. Допустим, это будет каталог
C:/Java. Затем создадим в этом каталоге текстовый файл, который переименуем в Program.java.
Откроем этот файл в любом текстовом редакторе и наберем в нем следующую программу:

public class Program{ 
     
    public static void main (String args[]){
         
        System.out.println("Hello Java!");
    }
}

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

При определении класса вначале идет модификатор доступа public, который указывает, что данный класс будет доступен
всем, то есть мы сможем его запустить из командной строки. Далее идет ключевое слово
class, а затем название класса. То есть класс называется Program. После названия в фигурных скобках расположено содержимое класса.

Класс может содержать различные переменные и методы. В данном случае у нас объявлен один метод main.
Это главный метод в любой программе на Java, он является входной точкой программы и с него начинается все управление. Он обязательно
должен присутствовать в программе.

Метод main также имеет модификатор public. Слово static указывает, что метод main — статический, а слово void — что он не возвращает никакого значения. Позже
мы подробнее разберем, что все это значит.

Далее в скобках у нас идут параметры метода — String args[] — это массив args, который хранит значения типа String, то
есть строки. В данном случае ни нам пока не нужны, но в реальной программе это те строковые параметры, которые передаются при запуске программы из
командной строки.

После списка параметров в фигурных скобках идет тело метода — это собственно те инструкции, которые и будет выполнять метод.
В данном случае фактически определени определена только одна инструкция — вывод на консоль некоторой строки. Для вывода на консоль используется встроенный метод
System.out.println(). В этот метод передается выводимая строка. Каждая инструкция завершается точкой с запятой.

Теперь скомпилируем написанную программу. Откроем командную строку (в Windows) или терминал в Linux/MacOS и введем там соответствующие команды. Первым делом перейдем в каталог, где лежит наш файл с программой с помощью команды:

В данном случае файл находится в каталоге C:\Java.

Первая программа на Java 16

Затем cкомпилируем программу с помощью команды

C:\Java>"C:\Program Files\Java\jdk-19\bin\javac" Program.java

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

После этого программа компилируется в байт-код, и в каталоге C:\Java можно будет найти новый файл Program.class.
Это и будет файл с байт-кодом программы. Теперь нам надо его запустить с помощью утилиты java:

C:\Java>"C:\Program Files\Java\jdk-19\bin\java" Program

Здесь уже расширение у файла не надо использовать.

Для ОС Windows весь процесс будет выглядеть следующим образом:

Первая программа на Java

Добавление java в переменную Path

Для компиляции приходится вводить полный путь к комилятору javac, что может быть сопряжено с ошибками при вводе, да и каждый раз вводить полный путь тоже неудобно.
Чтобы в дальнейшем облегчить работу, добавим путь к JDK в переменную PATH в переменных среды. Если мы работаем в Windows, то для добавления переменной среды
через поиск найдем найдем параметр Изменение системных переменных среды. Для этого введем в поле поиска «Изменение системных переменных среды»:

Переменные среды в Windows

Выберем пункт Изменение системных переменных среды. И сначала нам откроется окно «Свойства системы», где нажмем на кнопку
Переменные среды:

Системные переменные среды в Windows

Затем нам откроется окно, где мы можем увидеть все переменные среды.
(Также можно перейти через Параметры и пункт Система ->Дополнительные параметры системы ->Переменные среды)

Здесь нам нужно исправить системную переменную Path. Для этого выделим ее и нажмем на кнопку «Изменить»:

Установка системной переменной пути к JDK в Windows

В эту переменную Path нам надо добавить путь к инструментам JDK. И тут есть два момента.
Во-первых, при установке jdk по умолчанию ряд утилит также устанавливаются в папку C:\Program Files\Common Files\Oracle\Java\javapath. В том числе это такие файлы как
java.exe и javac.exe. И путь к этой папке по умолчанию добавляется в перемнную Path. То есть мы можем использовать этот путь.

Второй момент — в последних сборках Windows компания Microsoft также устанавливает свои сборки JDK, точнее OpenJDK, которые также по умолчанию добавляются в переменную Path
и которые мы также можем использовать. Но у этих сборок есть большой минус — они применяют одну из прошлых версий JDK (обычно это LTS-сборки). Например, в моем случае это 11-я версия,
но текущая версия может отличаться (например, на написание данной статьи текущей являлась версия 19).

Чтобы использовать последнюю версию среди путей в переменной Path убедимся, что путь C:\Program Files\Common Files\Oracle\Java\javapath располагается выше
путей к сборкам JDK от Microsoft. Для перемещения определенного пути вверх среди переменных среды можно использовать кнопку «Вверх:

Установка системной переменной пути к JDK в Windows и сборки OpenJDK от Microsoft

Также можно напрямую использовать путь к JDK.

Установка системной переменной пути к JDK в Windows и сборки OpenJDK от Microsoft

Для создания новой переменной надо нажать на кнопку «Создать» и ввести в новое поле путь «C:\Program Files\Java\jdk-[номер_версии]\bin». Но опять же его следуется с помощью кнопки Вверх поместить
над путями к OpenJDK от Microsoft.

После установки переменной Path перейдем к командной строке/терминалу (в более старых версиях Windows может потребоваться перезауск командной строки) и для проверки версии введем команду

Консоль нам должна в ответ ввести номер только что установленной версии JDK (в моем случае 19-й версии):

java version "19.0.1" 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)

И после этого можно вводить только названия утилит без полных путей:

Компиляция и запуск программы на Java в Windows в консоли

  • Java для чего нужна эта программа на windows 7
  • Java utf 8 to windows 1251
  • Java для игр windows 10
  • Java tm platform se binary скачать для windows 10
  • Java для windows 10 mobile