Я пытаюсь запустить приложение Java, но получаю эту ошибку:
java.lang.ClassNotFoundException:
После двоеточия следует местоположение отсутствующего класса. Однако я знаю, что этого местоположения не существует, поскольку класс находится в другом месте. Как я могу обновить путь к этому классу? Это как-то связано с путем к классам?
java
class
classpath
classnotfoundexception
user2426316
источник
источник
Ответы:
Ваш путь к классам не работает (что является очень распространенной проблемой в мире Java).
В зависимости от того, как вы запускаете приложение, вам необходимо изменить аргумент
-cp
, запись Class-Path в MANIFEST.MF или структуру диска.источник
Путь к классам - это список мест для загрузки классов.
Эти «местоположения» могут быть каталогами или файлами jar.
Для каталогов JVM будет следовать ожидаемому шаблону для загрузки класса. Если у меня есть каталог C: / myproject / classes в моем пути к классам, и я пытаюсь загрузить класс com.mycompany.Foo , он будет искать в каталоге классов каталог с именем com , затем в этом каталоге с именем mycompany и наконец, он будет искать файл с именем Foo.class .
Во втором случае для файлов jar он будет искать файл jar для этого класса. Файл jar на самом деле представляет собой просто заархивированный набор каталогов, подобных приведенному выше. Если вы разархивируете файл jar, вы получите кучу каталогов и файлов классов в соответствии с приведенным выше шаблоном.
Таким образом, JVM проходит путь к классам от начала до конца в поисках определения класса, когда пытается загрузить определение класса. Например, в пути к классам:
C: / myproject / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
JVM сначала попытается заглянуть в классы каталога , затем в stuff.jar и, наконец, в otherstuff.jar .
Когда вы получаете ClassNotFoundException, это означает, что JVM прошла весь путь к классам и не нашла класс, на который вы пытались сослаться. Решением, как это часто бывает в мире Java, является проверка пути к классам.
Вы определяете путь к классам в командной строке, произнося java -cp, а затем свой путь к классам. В IDE, такой как Eclipse, у вас будет опция меню для указания пути к классам.
источник
Это лучшее решение, которое я нашел до сих пор.
Предположим, у нас есть пакет,
org.mypackage
содержащий классы:а файлы, определяющие этот пакет, физически хранятся в каталоге
D:\myprogram
(в Windows) или/home/user/myprogram
(в Linux).Файловая структура будет выглядеть так:
Когда мы вызываем Java, мы указываем имя приложения для запуска:
org.mypackage.HelloWorld
. Однако мы также должны указать Java, где искать файлы и каталоги, определяющие наш пакет. Итак, чтобы запустить программу, мы должны использовать следующую команду:источник
Если вы знаете путь к классу или банке, содержащей класс, добавьте его в свой путь к классам во время его запуска. Вы можете использовать путь к классам, как указано здесь:
в Windows
в UNIX / Linux
источник
Попробуйте это, если вы используете maven. Я использую maven для своего проекта, и когда я это делаю
mvn clean install
и пытаюсь запустить программу, она выдает исключение. Итак, я очищаю проект и запускаю его снова, и он работает для меня.Я использую eclipse IDE.
Для исключения класса не найден при запуске теста Junit попробуйте запустить его
mvn clean test
один раз. Он скомпилирует все тестовые классы.источник
Чтобы добавить расположение класса в путь к классам через командную строку, просто добавьте
-cp
или-classpath
и расположение класса при его запуске. IEИли, если вы используете IDE, такую как eclipse, вы можете щелкнуть правой кнопкой мыши
project -> build path -> configure build path
и добавить внешний JAR, содержащий ваш класс, в путь сборки, тогда он должен работать нормально.источник
Используйте ';' как разделитель. Если переменные среды установлены правильно, вы должны увидеть свои настройки. Если ваши PATH и CLASSPATH верны, окна должны распознавать эти команды. Вам НЕ нужно перезагружать компьютер при установке Java.
источник
Добавьте полный путь к файлу jar в CLASSPATH. В Linux используют:
export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Другой способ (без редактирования CLASSPATH) - разархивировать банку в текущей папке проекта.У меня не работали способы:
1) Использование
-cp
опции с полным путем к файлу jar.2) Использование
-cp
только с именем jar, если оно находится в текущей папке3) Копирование баночки в папку текущего проекта
4) Копирование jar-файла в стандартное расположение java-файлов (/ usr / share / java)
Об этом решении сообщается для класса com.mysql.jdbc.Driver в mysql-connector-java.5 - *. Jar, работающем в Linux с OpenJDK версии 1.7.
источник
Поднимитесь наверх и удалите оператор импорта, если он есть, и повторно импортируйте класс. Но если это не так, выполните чистку, а затем сборку. Вы используете Netbeans или Eclipse?
источник
Я тоже столкнулся с этим и попробовал все другие решения. У меня не было файла .class в моей папке HTML, у меня был только файл .java. Как только я добавил файл .class, программа заработала нормально.
источник
Это может произойти, если ваш путь к классам неверен
Давайте поместим сериализуемый класс и десериализуемый класс под одним и тем же именем проекта. Вы запускаете сериализуемый класс, создавая сериализуемый объект в определенной папке. Теперь вам нужны обезвреженные данные. А пока если вы измените название проекта, он не сработает. Сначала вам нужно запустить сериализуемый класс, а затем десериализовать файл.
источник
Если вы используете maven, попробуйте обновить все проекты maven и создать моментальные снимки. Он также очистит и перестроит весь путь к классам .. Это решило мою проблему ..
источник
я только что сделал
1.Проверьте кеши и перезапустите
2. Восстановил мой проект, который решил проблему.
источник
Я пытался запустить .jar из кода C # с помощью
Process
класса. Код java успешно запускался из eclipse, но не из Visual Studio C #, и даже при прямом нажатии на файл jar он всегда останавливался сClassNotFoundException:
исключением. Решение для меня заключалось в экспорте Java-программы как «Runnable JAR file» вместо «JAR File». Надеюсь, это поможет кому-то.источник
Это может произойти в Windows после обновления java, где старая версия java SDK отсутствует, а новая присутствует. Я бы проверил, использует ли ваша IDE установленную версию java SDK (IntelliJ: CTRL + SHIFT + ALT + S)
источник
Если вы добавили несколько (сторонних) ** библиотек и расширяет ** класс приложения
Тогда это могло произойти.
Для этого вам нужно установить
multiDexEnabled true
и заменить свой расширенныйApplication
класс наMultiDexApplication
.Это будет решено.
источник
Основной общий вопрос - простейший общий ответ;)
Учитывая информацию, я сделаю предположение, что вы можете попробовать базовый подход к кодированию, построению / компиляции и запуску простого консольного приложения, такого как «Hello World», используя простой текстовый редактор и некоторую командную оболочку.
Эта ошибка возникает в следующем сценарии:
Другими словами, используйте:
PS Добавление расширения файла .class вызывает ту же ошибку. Также убедитесь, что папка bin Java (JDK / JRE) находится в PATH переменных среды операционной системы. (Дополнительные сведения см. В других публикациях по этому поводу) PPS Правильно ли я высказал свое предположение / с?
источник
Если вы используете maven, убедитесь, что у вас есть этот плагин
pom.xml
:Это поместит вашу зависимость (причину исключения) в вашу банку.
FYI : это будет включать все зависимости, завышенные в последней банке
источник
В моем случае класс, выброшенный как исключение class not found, имеет свойства, связанные с сертификатами ssl. Закройте eclipse и откройте с помощью «Запуск от имени администратора», после чего проблема будет решена. Поскольку у eclipse есть разрешение, связанное с проблемой, оно вызовет такое исключение.
источник
Поместите весь код в блок try, затем перехватите исключение в блоке catch
источник