Я пытаюсь запустить приложение приложения от HttpClient 4.0.1. Это - файл ClientMultiThreadedExecution.java от раздела в качестве примера. Я вставил эти файлы в пути к классу: apache-mime4j-0.6.jar
;commons-codec-1.3.jar
;commons-logging-1.1.1.jar
;httpclient-4.0.1.jar
;httpcore-4.0.1.jar
;httpmime-4.0.1.jar
и файл компилирует правильно. Во времени выполнения я получаю следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Я пропускаю ссылку? Это походит на ошибку пути к классу, но я не могу выяснить который файл банки включать?Заранее спасибо за помощь.
Это исключение сообщает что упомянутый класс отсутствует в пути к классам среды выполнения .
Есть несколько способов указать путь к классам среды выполнения, в зависимости от того, как вы выполняете программу. Поскольку приличная IDE прозрачно берет все это из ваших рук, держу пари, что вы запускаете это в командной строке.
Если вы запускаете его как файл JAR java.exe -jar
или дважды щелкнув файл, затем вам нужно указать путь к классам в записи Class-Path
файла JAR MANIFEST.MF
. Обратите внимание, что переменная среды % CLASSPATH%
и аргументы -cp
и -classpath
игнорируются всякий раз, когда вы выполняете JAR.
Если вы запускаете его как обычное Java-приложение с помощью java.exe
, вам необходимо указать его в -cp
или -classpath.
аргумент. Обратите внимание, что всякий раз, когда вы используете этот аргумент, переменная среды % CLASSPATH%
игнорируется .
В любом случае путь к классам должен состоять из строки (полукольцом), разделенной двоеточиями, путей к файлам JAR (либо абсолютных путей, либо относительно текущего рабочего каталога). Например.
java -cp .;/path/to/file1.jar;/path/to/file2.jar com.example.MyClass
(если вы используете Unix / Linux, используйте двоеточие вместо точки с запятой в качестве разделителя пути)
Этот класс находится в httpclient-4.0.1.jar (я только что загрузил его, чтобы убедиться), поэтому я подозреваю, что вы неправильно поместили его в путь к классам.
Как вы компилируете и запускаете свой код?