Немного поэкспериментировав, я понял, как использовать имя пакета и запускать файлы классов Java из командной строки.
Предположим, что мой исходный файл Java следующий: -
package mySample;
public abstract class Sample{
public static void main(String... a){
System.out.println("Hello ambiguity");
}
}
Этот файл находится в каталоге "D: \ Code N Code \ CommandLine".
Теперь при компиляции исходного кода (перейдя в вышеуказанный каталог из cmd) с помощью следующей команды: -
javac -d . Sample.java
Это автоматически создает папку «mySample» в моем текущем каталоге. Итак, мой файл класса Sample.class находится в каталоге «D: \ Code N Code \ CommandLine \ mySample». Компилятор создал эту новую папку «mySample» из имени пакета, которое я дал в своем исходном коде.
Так что, если бы я дал имя моего пакета как «package com.mySample», компилятор создал бы два каталога и поместил мой файл класса в «D: \ Code N Code \ CommandLine \ com \ mySample».
Теперь я все еще нахожусь в текущем рабочем каталоге, то есть в "D: \ Code N Code \ CommandLine". И чтобы запустить мой файл класса, я даю следующую команду:
java mySample.Sample
Итак, я даю полную иерархию пакетов, а затем имя класса. Интерпретатор Java будет искать в текущем каталоге каталог «mySample», а в каталоге «Sample.class». Он понимает это правильно и запускает это успешно. :)
Теперь, когда я спросил, почему он компилирует мой неверный исходный код пакета, он успешно скомпилирует код, но при запуске файла класса выдает NoClassDefFoundError. Таким образом, вышеуказанный метод может быть использован для использования имен пакетов из командной строки.