Как прописать путь к файлу java в командной строке

Обновлено: 03.07.2024

Я работал с буферизацией файла на своем локальном диске для анализа и получения определенных данных. В целях тестирования я легко мог это сделать:

Файл fileReader.java имеет следующую функцию:

Теперь я хочу, чтобы путь к файлу был передан как аргумент командной строки. Я пробовал несколько вещей, но я как бы новичок в этом и не смог заставить его работать. Может кто-то, пожалуйста, помогите и объясните, какие все изменения мне необходимо внести, чтобы включить это изменение в мой код.

спросил(а) 2020-03-02T14:26:46+03:00 1 год, 8 месяцев назад

Вам нужно сделать это:

ответил(а) 2020-03-02T14:40:23.335646+03:00 1 год, 8 месяцев назад

Ваша проблема состоит из двух сторон: как передать параметр из командной строки и как ее прочитать внутри вашего кода.

Передача аргументов в программу Java

Все аргументы, предназначенные для реального класса Java, а не для JVM, должны быть помещены после имени класса, например:

    Слэш / и обратная косая черта \ : поскольку вы находитесь в системе Windows, я бы предпочел использовать обратную косую черту для вашего пути, особенно если вы включаете букву диска. Java может работать с обоими вариантами, но лучше следовать вашим соглашениям SO.
    Двойные кавычки " , чтобы разрешить пробелы: вам нужно заключить свой путь в двойные кавычки, если в каких-либо каталогах есть пробелы в их именах, поэтому просто дважды указывайте их каждый раз.
    Удалить окончательную обратную косую черту: это относится только к путям каталогов (пути к файлу не могут заканчиваться обратным слэшем в Windows). Если вы напишете путь к каталогу следующим образом: "C:\My path\XYZ\" , последняя двойная кавычка будет включена как часть пути из-за предыдущей обратной косой черты, которая ускользает от нее \" . Вместо этого "C:\My path\XYZ" будет работать нормально.

Чтение аргументов из вашего метода main(String[])

Теперь это просто: как указывали другие, строка с вашим путем должна теперь находиться в args[0] :

Я добавил некоторую нуль-проверку, чтобы избежать проблем, таких как ArrayIndexOutOfBounds , с которыми вы столкнулись.

Я пытаюсь выполнить программу Java из командной строки в Windows. Вот мой код:

Я не уверен, как выполнить программу - помощь? Возможно ли это в Windows? Почему это отличается от другой среды (я думал, что JVM был написан один раз, работает в любом месте)?

предположим, что ваш файл находится в\C:\mywork

Команда "Выполнить" Строке

это делает C:\mywork текущий каталог.

отображает содержимое каталога. Вы должны увидеть filenamehere.java среди файлов.

это сообщает системе, где найти программы JDK.

это работает javac.exe, компилятор. Вы не должны видеть ничего, кроме следующая системная подсказка.

javac создал filenamehere.файл класса. Вы должны увидеть filenamehere.java и filenamehere.класс среди файлов.

это запускает интерпретатор Java. Затем вы должны увидеть свою программу выход.

если система не может найти javac, проверьте команду set path. Если и javac работает, но вы получаете ошибки, проверьте свой текст Java. Если программа компилирует, но вы получаете исключение, проверка орфографии и капитализация в имени файла и имени класса и java Командование адского мира. Java чувствительна к регистру!

чтобы завершить ответ:

скомпилируйте файл Java в *.файл класса

выполнение файла Java

создание исполняемого файла

у вас есть два варианта здесь -

С внешним файлом манифеста:

создайте файл манифеста say-MANIFEST.mf

файл манифеста - это не что иное, как явная запись основного класса

jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class

исполняемый файл по записи Точка:

  • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class

для запуска файла Jar

Complile файл Java для создания класса:

выполнить созданный класс:

в случае, если ваш класс Java находится в некотором пакете. Предположим, ваш класс Java с именем ABC.java присутствует com.hello.programs , тогда вам нужно запустить его с именем пакета.

скомпилируйте его обычным способом:

но чтобы запустить его, вам нужно дать имя пакета, а затем имя класса java:

Это легко. Если вы сохранили файл как A. text первое, что вам нужно сделать, это сохранить его как A.java - . Теперь это файл Java.

теперь вам нужно открыть cmd и установить путь к вам A.java файл перед компиляцией. вы можете обратиться этой для этого.

затем вы можете скомпилировать файл с помощью команды

затем запустите его с помощью

вот так вы компилируете и запускаете программу java в cmd. Вы также можете пройти через эти материал это Java в уроках глубины. Много вещей, которые вам нужно понять в Java, покрыты там для начинающих.

вы можете скомпилировать любой источник java с помощью javac в командной строке; например, javac CopyFile.Ява. Для запуска: Java CopyFile. Вы также можете скомпилировать все файлы java с помощью javac *.java, пока они находятся в одном каталоге

Если у вас возникла проблема с "не удалось найти или загрузить основной класс", у вас может не быть JRE в свой путь. Взгляните на этот вопрос: не удалось найти или загрузить основной класс

предполагая, что файл называется " CopyFile.Ява", сделайте следующее:

первая строка компилирует исходный код в исполняемый байт-код. Вторая строка выполняет его, сначала добавляя текущий каталог в путь к классу (на всякий случай).

в Windows 7 мне пришлось сделать следующее:

быстрый способ

долгая дорога

  1. установить JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. после установки, в редактирует путь Windows переменная среды и добавляет в путь Следующее C:\ProgramData\Oracle\Java\javapath - . В этой папке находятся символические ссылки на несколько исполняемых файлов java но "javac" не является одним из них поэтому при попытке запустить "javac" из командной строки Windows он выдает ошибку.
  3. я отредактировал путь: Панель управления -> Система -> вкладка Дополнительно -> "Переменные среды. "кнопка - > прокрутите вниз до "Path", Выделите и отредактируйте - > замените "C:\ProgramData\Oracle\Java\javapath" с прямой путь в папку Java бин "C:\Program файлы\папку Java\jdk1.8.\0_91 бин".

Это, вероятно, ломается при обновлении установки JDK, но теперь у вас есть доступ ко всем инструментам командной строки.

enter image description here

ШАГ 1: СНАЧАЛА ОТКРОЙТЕ КОМАНДНУЮ СТРОКУ, ГДЕ НАХОДИТСЯ ВАШ ФАЙЛ. (щелкните правой кнопкой мыши при нажатии shift)
ШАГ 2: ЗАТЕМ ИСПОЛЬЗУЙТЕ СЛЕДУЮЩИЕ КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ. (допустим, имя файла и класса, которые будут выполняться, называется Student.java) пример программы находится в фоновом режиме изображения.

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

В этой статье мы сосредоточимся на сценарии автономного приложения. В дальнейшем мы будем называть его приложением JAR.

В этом уроке мы сначала узнаем, как создать приложение JAR. Позже мы узнаем, как запускать приложение JAR с аргументами командной строки или без них|/.

2. Создайте приложение JAR

Файл JAR может содержать один или несколько основных классов. Каждый основной класс является точкой входа приложения . Таким образом, теоретически файл JAR может содержать более одного приложения, но он должен содержать по крайней мере один основной класс, чтобы иметь возможность работать.

Файл JAR может иметь одну точку входа, установленную в файле манифеста . В этом случае файл JAR является исполняемым файлом JAR . Основной класс должен быть включен в этот файл JAR.

Прежде всего, давайте рассмотрим краткий пример того, как скомпилировать наши классы и создать исполняемый файл JAR с файлом манифеста:

Неисполняемый JAR-это просто файл JAR, который не имеет Основного класса , определенного в файле манифеста. Как мы увидим позже, мы все еще можем запустить основной класс, который содержится в самом файле JAR.

Вот как мы создадим неисполняемую банку без файла манифеста:

3. Аргументы командной строки Java

Как и любое приложение, приложение JAR принимает любое количество аргументов, включая нулевые аргументы. Все зависит от потребностей приложения.

Это позволяет пользователю указать информацию о конфигурации при запуске приложения .

В результате приложение может избежать жестко закодированных значений и по-прежнему может обрабатывать множество различных вариантов использования.

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

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

Однако это не всегда относится к приложениям JAR.

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

Тем не менее, внутри приложения мы можем преобразовать любой элемент массива String в другие типы данных, такие как char , int , double , их классы-оболочки, или другие соответствующие типы.

4. Запустите исполняемый файл JAR с аргументами

Давайте рассмотрим базовый синтаксис для запуска исполняемого файла JAR с аргументами:

java -jar jar-имя файла [args …]

Исполняемый файл JAR, созданный ранее, представляет собой простое приложение, которое просто выводит переданные аргументы. Мы можем запустить его с любым количеством аргументов. Ниже приведен пример с двумя аргументами:

Мы увидим следующий вывод в консоли:

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

В большинстве случаев приложение JAR-это исполняемый файл JAR. Исполняемый файл JAR может содержать не более одного основного класса, определенного в файле манифеста .

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

5. Запустите неисполняемую банку с аргументами

Чтобы запустить приложение в неисполняемом файле JAR, мы должны использовать опцию -cp вместо -jar . Мы будем использовать параметр -cp (сокращение от classpath), чтобы указать файл JAR, содержащий файл класса, который мы хотим выполнить:

java -cp jar-file-name main-class-name [args …]

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

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

В этом уроке мы изучили два способа запуска приложения JAR в командной строке с аргументами или без них.

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

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

В ранних версиях Java для работы с файлами использовались классы типа File и FileInputStream . Но теперь класс File считается устаревшим, и использовать его не рекомендуется. Вы, конечно, можете еще встретить его в коде, параметрах методов или конструкторах классов.

Мы будем начинать изучение работы с файлами сразу с класса Path . Path — это класс, который пришел на смену File . Работа с ним безопаснее и эффективнее.

Класс Path

Технически Path — это не класс, а интерфейс. Так сделано для того, чтобы можно было под каждую операционную (и файловую) систему писать свой класс-наследник Path .

У Windows свои стандарты написания пути файлов, у Linux — свои. А ведь в мире еще много операционных систем, и у каждой — свои стандарты.

Поэтому везде в методах для работы с файлами указан интерфейс Path , а реально работа идет с его классами-наследниками: WindowsPath , UnixPath , .

Создание объекта Path

Чтобы создать объект Path (на самом деле это будет объект класса-наследника — WindowsPath ), нужно воспользоваться командой вида:

Где имя — это имя переменной типа Path . путь — это путь к файлу (или директории) вместе с именем файла (или директории). А of — статический метод класса Path .

Метод of() используется для того, чтобы создать объекты типа WindowsPath если программа запускается под Windows, а если программа запускается под Linux — объекты UnixPath . Вы не можете создать объект типа Path с помощью кода вида new Path() .

Код Примечание
Путь к файлу
Путь к директории

Файл (или директория) не обязаны существовать, чтобы мог существовать валидный объект типа Path . Может вы только хотите создать файл. Объект типа Path — это как продвинутая версия типа String — он не привязан к конкретному файлу на диске: он просто хранит некий путь на диске и все.

2. Методы типа Path

У интерфейса Path есть довольно много интересных методов. Самые интересные представлены в таблице ниже.

Метод Описание
Возвращает родительскую директорию
Возвращает имя файла без директории
Возвращает корневую директорию из пути
Проверяет, что текущий путь — абсолютный
Преобразует путь в абсолютный
Убирает шаблоны в имени директории.
Строит новый абсолютный путь из абсолютного и относительного.
Получает относительный путь из двух абсолютных путей.
Проверяет, что текущий путь начинается с пути
Проверяет, что текущий путь заканчивается на путь
Дробит путь на части с помощью разделителя / .
Возвращает количество частей.
Дробит путь на части с помощью разделителя / .
Возвращает часть по ее номеру.
Дробит путь на части с помощью разделителя / .
Возвращает часть пути, заданную интервалом.
Преобразует объект Path в устаревший объект File
Преобразует объект Path в объект типа URI

Ниже идет краткое описание существующих методов.

3. Разделение пути на части

Метод getParent() возвращает путь, который указывает на родительскую директорию для текущего пути. Независимо от того, был этот путь директорией или файлом:

Метод getFileName() возвращает одно имя файла (или директории) — то, что идет после последнего разделителя:

Читайте также: