Обратите внимание, связанные решения (например, Fatal Ошибка: невозможно найти пакет java.lang в пути к классам или пути к загрузочному классу) не работают.

Я получаю эту ошибку, но пакет импортирован (commons ... .jar)

org.apache.commons.lang3.tuple //does not exist import
org.apache.commons.lang3.tuple.MutableTriple

Исходный код

import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.lang3.tuple.Triple;

Код сборки:

export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_25.jdk / Contents / Home /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac -target 1.8 -source 1.8 -classpath \ "../lib/commons-lang3-3.4.jar;../lib/httpclient-4.5.jar;../lib/httpcore-4.4.1.jar;../lib/org.json-20120521.jar ; ../ lib / pdfbox-app-2.0.0-20150606.170503-1383.jar; ../ src /:../ lib / commons-lang3-3.4-javadoc.jar; ../ lib / pdfbox-app- 2.0.0-20150606.170503-1383-sources.jar "\ -d output \ ../src/com/tymaf/pdf/*.java

Как исправить эту проблему?

5
user1122069 27 Окт 2015 в 20:53

2 ответа

Лучший ответ

Дважды проверьте свой путь к классам. Похоже, вы смешали разделители ; и :.

Также вместо включения jar в скомпилированные классы (сама библиотека). Вы включили java-docs и sources, которые бесполезны в classpath.

../src/:
../lib/commons-lang3-3.4-javadoc.jar;
../lib/pdfbox-app-2.0.0-20150606.170503-1383-sources.jar
5
maytham-ɯɐɥʇʎɐɯ 19 Авг 2016 в 21:59

Вот мое предложение

Как скомпилировать и использовать расширение .jar

Расширение .jar можно импортировать по-разному в зависимости от вашей среды и IDE.

Вот как это работает в основном режиме с консоли.

  1. Загрузите библиотеку .jar.zip с сайта
    http://www.java2s.com/Code/Jar/c/Downloadcommonslang333jar. htm

  2. Создайте папку в рабочем (проектном) каталоге, назовите ее libs

  3. Разархивируйте загруженный файл и скопируйте commons-lang3-3.3.jar в свой рабочий каталог libs

  4. Я также создал класс только для тестирования, назовите его TheNewWork.java и добавил 3 импорта.

  5. Теперь из вашего рабочего каталога c:\projects для компиляции:

    javac -classpath "/Projects/libs/commons-lang3-3.3.jar;" TheNewWork.java

  6. И для его запуска:

    java -classpath "/Projects/libs/commons-lang3-3.3.jar;" TheNewWork

Если у вас более одного .jar, просто добавьте ; для Windows и : для Linux. Кстати, я использую консоль Windows 10 cmder и java jdk1.8.0_66. В другой консоли ОС вам может потребоваться поставить .:Projects...etc вместо /Projects...etc. но идея та же.

ОБНОВЛЕНИЕ
В Windows можно указать путь к классам, например

set CLASSPATH=%CLASSPATH%;C:\Projects\libs\commons-lang3-3.3.jar

ИЛИ в Linux

export CLASSPATH=".:/Projects/libs/commons-lang3-3.3.jar"

Тогда вы можете запустить javac TheNewWork.java, но делать это тем или иным способом - это личное дело каждого. Кое-что подобное можно делать и в других ОС.

И последнее: если вы ленивы и не хотите ни писать полную командную строку, ни создавать путь к классам, вы можете создать пакетный файл с полной командной строкой и запустить его таким образом;)

Некоторые ссылки:

Я надеюсь это решит твою проблему

До решения введите описание изображения здесь

После решения введите описание изображения здесь


ПРИМЕЧАНИЕ
Вдобавок благодаря @MarkPeters уведомил меня о моем предыдущем ответе: добавление зависимостей приложений непосредственно в библиотеки JRE не является хорошим подходом, поскольку делает JRE подходящей для запуска только одного приложения Java, а не для общей среды выполнения. Кроме того, это усложнит любое развертывание, которое хочет сделать ОП. lib / ext предназначен для расширения основных API-интерфейсов Java, как описано здесь: docs.oracle.com/javase/tutorial/ext/basics/install.html. Не для обычных зависимостей приложений.

2
Community 20 Июн 2020 в 09:12