GOOGLE ADS

суббота, 7 мая 2022 г.

Что такое путь к классам и как его установить?

Я только что прочитал эту строку:


Первое, что делает метод format(), — загружает шаблон Velocity из пути к классам с именем output.vm.


Пожалуйста, объясните, что имелось в виду под classpath в этом контексте, и как я должен установить classpath.


Решение проблемы

При программировании на Java вы делаете другие классы доступными для класса, который вы пишете, помещая что-то вроде этого в начало вашего исходного файла:

import org.javaguy.coolframework.MyClass;

Или иногда вы «массово импортируете», говоря:

import org.javaguy.coolframework.*;

Итак, позже в вашей программе, когда вы говорите:

MyClass mine = new MyClass();

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

Было бы нецелесообразно, чтобы виртуальная машина просматривала каждую папку на вашем компьютере, поэтому вы должны предоставить виртуальной машине список мест для поиска. Это делается путем помещения файлов папок и jar в путь к классам.

Прежде чем мы поговорим о том, как устанавливается путь к классам, давайте поговорим о файлах.class, пакетах и ​​файлах.jar.

Во-первых, давайте предположим, что MyClass — это то, что вы создали как часть своего проекта, и он находится в каталоге вашего проекта с именем output. Файл.class будет находиться по адресу output/org/javaguy/coolframework/MyClass.class(вместе со всеми остальными файлами в этом пакете). Чтобы добраться до этого файла, ваш путь просто должен содержать папку «выход», а не всю структуру пакета, поскольку ваш оператор импорта предоставляет всю эту информацию виртуальной машине.

Теперь давайте предположим, что вы собрали CoolFramework в файл.jar и поместили этот CoolFramework.jar в каталог lib в вашем проекте. Теперь вам нужно будет указать путь к lib/CoolFramework.jarклассам. Виртуальная машина заглянет в файл jar для org/javaguy/coolframeworkчасти и найдет ваш класс.

Итак, пути к классам содержат:

  • JAR-файлы и

  • Пути к вершине иерархии пакетов.

  • Как вы устанавливаете свой путь к классам?

    Кажется, что первый способ, которым все учатся, — это переменные среды. На unix-машине вы можете сказать что-то вроде:

    export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

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

    Второй способ — использовать -cpпараметр при запуске Java, например:

    java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/" MyMainClass

    Вариантом этого является третий способ, который часто выполняется с помощью файла .shили .bat, который вычисляет путь к классам и передает его в Java через -cpпараметр.

    Со всем вышеперечисленным есть "попалась". В большинстве систем (Linux, Mac OS, UNIX и т. д.) символ двоеточия (':') является разделителем пути к классам. В windowsm разделителем является точка с запятой (';')

    Итак, как лучше всего это сделать?

    Глобальная установка через переменные окружения плоха, как правило, по тем же причинам, что и глобальные переменные. Вы меняете CLASSPATHпеременную окружения, чтобы одна программа работала, и в итоге вы ломаете другую программу.

    Это -cpпуть. Обычно я убеждаюсь, что моя CLASSPATHпеременная среды является пустой строкой, где я разрабатываю, когда это возможно, чтобы избежать проблем с глобальным путем к классам (хотя некоторые инструменты не довольны, когда глобальный путь к классам пуст - я знаю два распространенных, мега-тысячи долларов лицензированные серверы J2EE и Java, у которых есть такая проблема с их инструментами командной строки).

    Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...