Среда, 16.07.2025, 17:34
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Java

Как запустить консольную Java программу ? (а ещё чтобы на русском всё было)
Один из любимых вопросов начинающих программистов на Java (да и не только на Java)
Начнём с компиляции и запуска.
Во первых Java приложения никак не могут обойтись без виртуальной машины, чтобы она у вас появилось, грубо говоря, нужно установить JDK (Java Development Kit), скачать его можно прямо с сайта Oracle, здесь.
Смотрим переменные окружения, которые у нас появились.
Это делается так: правой кнопкой мыши на "Мой компьютер" -> "Свойства" ->  "Дополнительно" -> "Переменные среды".
В переменной PATH - должен быть прописан путь к исполняемым файлам JDK, там где java.exe (виртуальная машина, выполняющая байт код скомпилированный утилитой javac.exe) и javac.exe (компилятор, транслирует файлы с расширением java в байт код, файлы с расширением class)
Итак, начнём с организации папок.
Например для консольной игры про бабку создаём папку Game.
Далее нам необходимо создать в ней папку classes и src.
В src у нас будут храниться файлы java.
В classes скомпилированные class файлы.

Пользуемся примером из статьи про игру.
В папке src создаём папку babgame.
Каждый пакет package - это папка, а babgame у нас пакет, не забываем.
Пакеты рекомендуют называть именами доменов, т.к. имя пакета получается уникальным. Например если у нас пакет su.clan.pr0gram, то надо будет создать три вложенных папки, сначала su, затем clan и на конец pr0gram, а в нём уже файлы нашей программы.
Создаём файл с расширением java в babgame и записываем туда код программы, сохранили, выходим из babgame, затем из src, попадпем в Game.
Пишем скрипт для консоли - compile.cmd

Code

javac -classpath ./classes -d ./classes -s ./src src/babgame/Main.java -encoding Cp1251
pause

pause можно убрать, это задержка на случай выдачи ошибок компилятором.
javac - как вы наверно уже поняли это компилятор, он принимает с пару десятков параметров, пару тройку из которых мы применили.
-classpath ./classes - указываем в какой папке у нас классы
-d ./classes - указываем в какой папке у нас будут генерироваться class файлы
-s ./src - указываем папку с исходниками (в принципе можно не писать)
src/babgame/Main.java - сам файл в папке src (у меня он называется Main.java)
кстати, не забудьте, имя класса описываемого в файле с расширением java должно совпадать с названием файла (без расширения) (в некоторых системах зависит даже регистр написания, нижний или верхний)
-encoding Cp1251 - указывает, в какой кодировке следует считывать файл с исходным кодом программы. (предполагается, что исходник написан под Windows)

Скомпилированный файл попадёт в папку classes.
Пишем следующий скрипт:
run.cmd

Code

java -Dfile.encoding=Cp866 -classpath ./classes Main

java - запускает наш class файл.
-Dfile.encoding=Cp866 - указывает в какой кодировке следует производить вывод.
Так как консоль по умолчанию у нас выводит в Cp866, так и сделаем.
-classpath ./classes - указываем папку где у нас хранятся классы.
Main - имя класса, где у нас находится метод main(), без которого как известно, программа не запустится.

Эти два скрипта создаём в директории Game, ещё раз напомню.
Ну вот и всё, можно играть до утра ! smile

Категория: Java | Добавил: C0demaker (24.04.2009)
Просмотров: 32507 | Комментарии: 13 | Рейтинг: 5.0/2
Всего комментариев: 13
0  
13 Klon   (05.10.2015 00:40) [Материал]
Не понимаю что за ошибка у меня. 
http://f-picture.net/lfp/s017.radikal.ru/i403/1510/f1/cecbb19493e0.png/htm

0  
11 Вера   (04.01.2012 01:41) [Материал]
Если CLASSPATH - путь до библиотек, у меня выглядит следующим образом C:\Program Files\Java\jdk1.6.0_26\lib;C:\Program Files\Java\jdk1.6.0_26\jre\lib;
тогда как должен выглядеть PATH - путь к исполняемым файлам
может быть так
C:\Program Files\Java\jdk1.6.0_26\bin\; ?
Если так, то после запроса

С:Documents and Settings\user>javac -version появилась комбинация
javac 1.6.0_26

а после запроса
С:Documents and Settings\user>java -version появилась информация вида
java version "1.6.0_26"
Java<TM> SE Runtime Environment <build 1.6.0_26-b03>
Java HotSpot<TM> Client UM <build 20.1-b02, mixed mode, sharing>

Можно ли считать, что пути CLASSPATH и PATH мною прописаны верно?
И куда именно необходимо добавить в путь текущую папку, точку и косую черту - ./ ?
И если javac не запускается, а java запускается, и у меня прописаны пути до папки bin JRE, а не JDK, как это можно исправить?
Проект могу выслать, только не знаю как.

0  
12 C0demaker   (06.01.2012 20:32) [Материал]
Я вроде бы всё расписал уже.
Высылайте на почту указанную в моём профиле.

0  
9 Вера   (02.01.2012 16:48) [Материал]
Ввод команды java -version действительно выдал мне в консоль информацию о версии виртуальной машины.
Работоспособность компилятора вводом комбинации javac -version проверить не удалось - появилось сообщение о том, что "javac" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Затем появилась комбинация C:\Documents and Settings\user>_
Что мне это дает? То есть что дальше с этим делать? Как вызвать командную строку для работы с Java?
Установила NetBeans и Eclipse, но запустить на выполнение нужный мне проект не могу (то есть у меня уже имеется готовая мини-программа или проект, который включает в себя 1 java-файл и 9 class-файлов, как заставить их работать - на знаю).

0  
10 C0demaker   (04.01.2012 00:34) [Материал]
Если javac не запускается, а java запускается, то можно предположить что у вас прописаны пути до папки bin JRE, а не JDK, исправьте. (в JRE нет javac)
На счёт вашего проекта есть одна сложность, входят ли ваши class файлы в какой-либо пакет или нет.
Откуда взялась такая структура вашего проекта ?
Предположим, что class файлы это модули, которыми нужно воспользоваться в своей программе, тогда:
Если class файлы не входят в пакет, то компиляция вашего проекта сводится к набору следующей команды - javac -classpath . вашФайл.java
Все файлы должны находиться в одной папке и эту команду вы должны вводить также находясь в этой папке.
В случае с пакетами читайте пример в статье.
С Eclipse не так всё сложно, в свойствах проекта выбираете Java Build Path -> Libraries, нажимаете кнопку Add Class Folder.., указываете папку где лежат ваши class файлы. Теперь можно пользоваться этими классами в программе.

0  
7 Vera   (28.12.2011 02:09) [Материал]
Установила jdk-6u24-windows-i586
По пути C:\Program Files\Java нашла папки:
папку jdk1.6.0_24, папку jdk1.6.0_26, папку jre6. Где находится exe-файл?
Прописала CLASSPATH по пути C:\Program Files\Java\jdk1.6.0_26\lib;C:\Program Files\Java\jdk1.6.0_26\jre\lib;
Не могу запустить вообще JDK: не нахожу её совсем среди программ по пути Пуск-> Все программы. Как вызвать консоль?

0  
8 C0demaker   (02.01.2012 01:04) [Материал]
Когда я начинал изучать java я частенько пользовался CLASSPATH, сейчас же обхожусь без него
Есть параметр "classpath" как у java машины, так и у компилятора (в этом примере этот параметр также используется, посмотрите)

java -help выдаст вам полный перечень параметров (у javac также)

В "Пуске" искать JDK не надо, в него входят в основном консольные программы, выполняемые в командной оболочке
Оболочка вызывается запуском cmd.exe, который лежит в папке windows\system32
Можно также воспользоваться кнопкой Start (у меня так на клавиатуре называется, эта кнопка с изображением логотипа Windows, при нажатии на которую отрывается меню "Пуск") + r, покажется диалоговое окно "Выполнить", в текстовом поле пишете cmd и нажимаете Enter.
При правильном указании пути до папки bin JDK в PATH ввод команды java -version выдаст вам в консоль информацию о версии виртуальной машины
Также можно проверить работоспособность компилятора, вводим javac -version
Если всё работает, то всё хорошо

Папки lib JDK не трогаем, он сам знает где они лежат, за исключением специфических библиотек, которыми вы пока вряд ли будете пользоваться

Если хотите качественно разобраться в Java советую начать с командной строки, если надо начать сразу что то делать и это что то не будет вашей работой, то можно использовать NetBeans или Eclipse, свободно распространяемые среды разработки (склоняю к выбору Eclipse)

P.S. Кстати
Папку jdk1.6.0_24 лучше удалить
При установке свежей версии удаляйте старые во избежании путаницы

0  
5 Serega   (12.06.2011 03:50) [Материал]
C:\glassfish3\jdk\game>java -Dfile.encoding=Cp866 -classpath ./classes Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main
Caused by: java.lang.ClassNotFoundException: Main
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)
Could not find the main class: Main. Program will exit.

C:\glassfish3\jdk\game>pause
Для продолжения нажмите любую клавишу . . .

// вроде бы сделал все как написано, чего это оно?)

0  
6 C0demaker   (15.06.2011 23:31) [Материал]
не найден класс Main
убедитесь что файл Main.class находится в папке C:\glassfish3\jdk\game\classes

0  
3 Andrea   (16.02.2011 21:37) [Материал]
Я запускаю как у Вас написано C:\Program Files\Java\jdk1.6.0_07\bin\ javac.exe

Окно появляется и сразу пропадает!!Что делать??!!!!


0  
4 C0demaker   (18.03.2011 15:22) [Материал]
Ещё раз повторю, C:\Program Files\Java\jdk1.6.0_07\bin\ - это путь, на данный момент у меня он уже изменился (и будет менятся), т.к. при установке свежей JDK номер версии меняется
Поэтому если вы установили свежую JDK и пытаетесь запустить по старому пути, у вас, естественно, ничего не получится
Вариантов два:
1) Компилятор сделал своё дело и завершив работу, окно закрывается, ищите скомпилированный class файл
2) создайте командный (bat или cmd (или sh под Linux)) файл, добавьте в конце команду приостановки, типа Pause и посмотрите что пишет компилятор, возможно он выдаёт ошибки или он просто не может запуститься

0  
1 Александр   (11.08.2010 15:31) [Материал]
Правда непонятно, где эти java(c).exe лежат. Поиск несколько результатов выдаёт, а какой нужно-непонятно.

0  
2 C0demaker   (02.09.2010 00:01) [Материал]
Если поиск выдаёт несколько результатов, то
1) Смотрим главную папку и определяем, что это у нас, JDK или JRE
2) Если две папки JRE, но разные версии (версию виртуальной машины можно узнать командой: java -version), то оставляем свежую
3) Наводим порядок в переменной окружения PATH, оставляем только нужные пути до каталога bin

У меня лично java.exe и javac.exe, как в прочем и другие утилиты находятся в папке C:\Program Files\Java\jdk1.6.0_07\bin\
(На момент написания статьи папка была C:\Sun\SDK\jdk)
Полагаю, не у одного меня
Путь до виртуальной машины (и других утилит, находящихся в папке с ней) нужно добавить в переменную окружения операционной системы PATH (в ОС Windows)
Если вы установили JRE, а не JDK, то компилятора и других нужных утилит разработчика у вас НЕ будет
Нужно установить именно JDK, для разработки приложений на Java
JRE устанавливается тем человеком (а в некоторых ОС, например в большинстве дистрибутивов Linux, JRE уже установлено), кто хочет запускать Java приложения, а не разрабатывать их



Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025