Правильно ли включать отдельные файлы в аргумент -classpath для виртуальной машины Java? - PullRequest
0 голосов
/ 23 января 2012

В настоящее время принято включать отдельные файлы (кроме файлов JAR, например, файлы конфигурации или файлы данных) в путь к классам.Это считается правильным и почему или почему нет?

Обновление:

С http://docs.oracle.com/javase/7/docs/tooldocs/windows/java.html:

-cp classpath Укажите списоккаталоги, JAR-архивы и ZIP-архивы для поиска файлов классов.Записи пути к классу разделяются точкой с запятой (;).Указание -classpath или -cp переопределяет любой параметр переменной среды CLASSPATH.

Этот вопрос также можно интерпретировать как вопрос: содержит ли приведенное выше перечисление каталогов, JAR-архивов и ZIP-архивов неявное "и ничего больше "?

Обновление:

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

Обновление:

С http://docs.oracle.com/javase/7/docs/tooldocs/windows/classpath.html:

Записи пути к классам, которые не являются ни каталогами, ни архивами (файлы .zip или .jar), игнорируются.

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Если ваша программа загружает эти другие файлы, используя Classloader.getResourceAsStream() (или каким-либо подобным способом), то имеет смысл включить эти файлы в путь к классам.

Это часто встречается, например для файлов лицензий, связанных с приложением.

Так что да, это считается правильным - по крайней мере, с моей точки зрения.

2 голосов
/ 23 января 2012

classpath содержит либо каталоги, либо файлы jar

0 голосов
/ 23 января 2012

С http://docs.oracle.com/javase/7/docs/tooldocs/windows/java.html:

-cp classpath

Укажите список каталогов, JAR-архивов и ZIP-архивов для поиска файлов классов.Указание -classpath или -cp переопределяет любой параметр переменной среды CLASSPATH.

Если -classpath и -cp не используются и CLASSPATH не заданы, путь к классу пользователя состоит из текущего каталога (.).

Для получения дополнительной информации о путях классов см. Установка пути к классам (http://docs.oracle.com/javase/7/docs/tooldocs/windows/classpath.html).

С http://docs.oracle.com/javase/7/docs/tooldocs/windows/classpath.html:

Записи пути к классам, которые не являются ни каталогами, ниархивы (файлы .zip или .jar) игнорируются.

Далее:

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

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