javac: пакет org.apache.poi.hssf.usermodel не существует
У меня есть программа, пытающаяся использовать классы из jakarta-poi-3.0.2.jar
в моем /usr/share/java каталоге:
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
etc...
Когда я компилирую, я получаю package org.apache.poi.hssf.usermodel does not exist
ошибка для каждого из указанных выше импортов.
У меня есть /usr/share/java в моем классе. Я что-то пропустил?
4 ответа
/usr/share/java на пути к классам не содержит всех jar-файлов в /usr/share/java.
Попробуйте вместо этого поместить /usr/share/java/jakarta-poi-3.0.2.jar в путь к классам.
Во-первых, вы можете захотеть обновить - Apache POI 3.0.2 более 3 лет, и с тех пор было много исправлений!
Что касается вашей проблемы, вам нужно либо перечислить каждый файл jar по отдельности в вашем classpath, либо вы должны поместить все ваши jar-файлы в каталог jre lib (содержимое которого автоматически включается). Последнее вообще не рекомендуется, хотя...
Вы не можете просто перечислить каталог на пути к классам, и поднять из него банки, извините. Только отдельные файлы классов будут загружены из каталога classpath, jars не будет
Следующее решение помогло мне
Путь к классам - это путь, который среда выполнения Java ищет для классов и других файлов ресурсов. Путь поиска класса (более известный под более коротким именем "путь к классу") можно задать с помощью параметра -classpath при вызове инструмента JDK (предпочтительный метод) или путем установки переменной среды CLASSPATH. Параметр -classpath является предпочтительным, поскольку вы можете установить его отдельно для каждого приложения, не затрагивая другие приложения и не изменяя его значение другими приложениями.
C:> sdkTool -classpath classpath1; classpath2...
-или же-
C:> set CLASSPATH = classpath1; classpath2...
где:
sdkTool Инструмент командной строки, такой как java, javac, javadoc или apt. Список см. В разделе Инструменты JDK.
classpath1; classpath2 Пути к классам к файлам.jar, .zip или.class. Каждый путь к классу должен заканчиваться именем файла или каталога в зависимости от того, для чего вы устанавливаете путь к классу: Для файла.jar или.zip, содержащего файлы.class, путь к классу заканчивается именем файла.zip или.jar. Для файлов.class в безымянном пакете путь к классу заканчивается каталогом, содержащим файлы.class. Для файлов.class в именованном пакете путь к классу заканчивается каталогом, в котором находится "корневой" пакет (первый пакет с полным именем пакета). Несколько записей пути разделяются точкой с запятой. С помощью команды set важно опустить пробелы вокруг знака равенства (=).
Путь к классу по умолчанию - это текущий каталог. Установка переменной CLASSPATH или использование параметра командной строки -classpath переопределяет это значение по умолчанию, поэтому, если вы хотите включить текущий каталог в путь поиска, вы должны включить "." в новых настройках.
Записи пути к классам, которые не являются ни каталогами, ни архивами (файлы.zip или.jar), ни * игнорируются.
Ссылка:http://download.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html
Путь к классу начальной загрузки равен $JAVA_HOME/lib, но для пользовательских приложений используйте пользовательские пути к классам, задав параметр -classpath следующим образом: java -classpath /usr/share/java/myclasses.jar