Я только что прочитал эту строку:
Первое, что делает метод 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
части и найдет ваш класс.
Итак, пути к классам содержат:
Как вы устанавливаете свой путь к классам?
Кажется, что первый способ, которым все учатся, — это переменные среды. На 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, у которых есть такая проблема с их инструментами командной строки).
Комментариев нет:
Отправить комментарий