Почему classpath =/tomcat_lib / не работает

#java #compilation #classpath

#java #Сборник #classpath

Вопрос:

ПРИВЕТ, ребята,

Существует abc.jar в /tomcat_lib. Мне нужно использовать это в моем def.java

Я устал

javac -classpath /tomcat_lib/ -d ../классы def.java

но это не работает

Но если это сработает, если я использую

javac -classpath /tomcat_lib/abc.jar -d ….

Кто-нибудь может помочь объяснить это?

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

1. Если вы хотите сделать это для группы файлов jar, ознакомьтесь с разделом «Понимание подстановочных знаков пути к классу» здесь: download.oracle.com/javase/6/docs/technotes/tools/solaris /…

Ответ №1:

Чтобы добавить jar к вашему classpath, вам нужно указать путь до файла .jar включительно.

Цитирую официальную документацию Java SE 6 по адресу Oracle.com :

Каждый [элемент в вашем classpath] должен заканчиваться именем файла или каталогом в зависимости от того, к чему вы задаете путь к классу:

  • Для файла .jar или .zip, который содержит файлы .class, путь к классу заканчивается именем файла .zip или .jar.
  • Для файлов .class в неназванном пакете путь к классу заканчивается каталогом, содержащим файлы .class.
  • Для файлов .class в именованном пакете путь к классу заканчивается каталогом, который содержит «корневой» пакет (первый пакет с полным именем пакета).

…и из раздела «Папки и архивные файлы» той же документации:

Когда классы хранятся в каталоге (папке), например c:javaMyClassesutilitymyapp тогда путь к классу указывает на каталог, который содержит первый элемент имени пакета. (в этом случае, C:javaMyClasses , поскольку имя пакета utility.myapp.)

Но когда классы хранятся в архивном файле (zip илиjar-файле), запись пути к классу представляет собой путь к zip или jar-файлу, включающий этот файл.

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

1. Идеальный. У меня был тот же вопрос. Поиск в StackOverflow намного лучше, чем публикация нового вопроса.