Java: импорт, путь к классам и пакеты - PullRequest
3 голосов
/ 22 октября 2011

У меня есть файл, который импортирует org.w3c.dom.Document.Компиляция и запуск - это хорошо, но я не понимаю, откуда он знает, где найти этот пакет, и мне просто интересно, как он работает.Я использовал команду locate, чтобы попытаться найти org.w3c.dom, но ничего не получил.Где находятся эти пакеты?Мне кажется, что правильное место для поиска - переменная среды CLASSPATH, поскольку мои результаты поиска, похоже, предполагают это.Это правильно?В любом случае, я не знаю, как узнать, какая у меня переменная CLASSPATH.Кажется, это не переменная окружения, о которой знает моя оболочка.

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

JVM находит классы, используя настройки пути к классам, где заданы все пути к требуемым пакетам.Путь к классам может быть установлен несколькими способами.Первая упомянутая вами переменная среды CLASSPATH.Это необязательно и может быть сброшено.Второй способ - это явная опция "-cp" для исполняемого файла "java".

Также некоторые jre-файлы времени выполнения JRE добавляются в classpath по умолчанию неявно, поэтому вам не нужно искать и добавлять стандартные пакеты самостоятельно (особенно тот, который вы упомянули в своем вопросе).

2 голосов
/ 22 октября 2011

Это будет частью основных библиотек (rt.jar), так что это будет везде, где вы установили java JRE;особенно под $JAVA_HOME/jre/lib

Вы можете заглянуть внутрь файлов .jar, используя команду jar.Чтобы увидеть класс, который вы упомянули, вы можете сделать:

jar tvf rt.jar 

Здесь перечислены все классы в этой банке.

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

Для ясности отредактируйте:

JVM по умолчанию включает <Where_you_installed_jdk>/jre/lib и <Where_you_installed_jdk>/jre/lib/extВсе остальное должно быть добавлено вами явным образом либо путем передачи его непосредственно в java с помощью опции -cp, либо путем добавления его в переменную окружения CLASS_PATH.

С соответствующей документацией можно ознакомиться по адресу: http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html

0 голосов
/ 11 ноября 2014

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

...