Как запустить консольную 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
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, ещё раз напомню. Ну вот и всё, можно играть до утра !
Если 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, как это можно исправить? Проект могу выслать, только не знаю как.
Ввод команды java -version действительно выдал мне в консоль информацию о версии виртуальной машины. Работоспособность компилятора вводом комбинации javac -version проверить не удалось - появилось сообщение о том, что "javac" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Затем появилась комбинация C:\Documents and Settings\user>_ Что мне это дает? То есть что дальше с этим делать? Как вызвать командную строку для работы с Java? Установила NetBeans и Eclipse, но запустить на выполнение нужный мне проект не могу (то есть у меня уже имеется готовая мини-программа или проект, который включает в себя 1 java-файл и 9 class-файлов, как заставить их работать - на знаю).
Если javac не запускается, а java запускается, то можно предположить что у вас прописаны пути до папки bin JRE, а не JDK, исправьте. (в JRE нет javac) На счёт вашего проекта есть одна сложность, входят ли ваши class файлы в какой-либо пакет или нет. Откуда взялась такая структура вашего проекта ? Предположим, что class файлы это модули, которыми нужно воспользоваться в своей программе, тогда: Если class файлы не входят в пакет, то компиляция вашего проекта сводится к набору следующей команды - javac -classpath . вашФайл.java Все файлы должны находиться в одной папке и эту команду вы должны вводить также находясь в этой папке. В случае с пакетами читайте пример в статье. С Eclipse не так всё сложно, в свойствах проекта выбираете Java Build Path -> Libraries, нажимаете кнопку Add Class Folder.., указываете папку где лежат ваши class файлы. Теперь можно пользоваться этими классами в программе.
Установила 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: не нахожу её совсем среди программ по пути Пуск-> Все программы. Как вызвать консоль?
Когда я начинал изучать 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 лучше удалить При установке свежей версии удаляйте старые во избежании путаницы
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 Для продолжения нажмите любую клавишу . . .
// вроде бы сделал все как написано, чего это оно?)
Ещё раз повторю, C:\Program Files\Java\jdk1.6.0_07\bin\ - это путь, на данный момент у меня он уже изменился (и будет менятся), т.к. при установке свежей JDK номер версии меняется Поэтому если вы установили свежую JDK и пытаетесь запустить по старому пути, у вас, естественно, ничего не получится Вариантов два: 1) Компилятор сделал своё дело и завершив работу, окно закрывается, ищите скомпилированный class файл 2) создайте командный (bat или cmd (или sh под Linux)) файл, добавьте в конце команду приостановки, типа Pause и посмотрите что пишет компилятор, возможно он выдаёт ошибки или он просто не может запуститься
Если поиск выдаёт несколько результатов, то 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 приложения, а не разрабатывать их
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]