Если приведенная выше эмулированная производительность выделена серым цветом, что было для меня, поэтому приведенный выше ответ не помог.
Не самый эффективный способ, но вы можете изменить разрешение экрана до (1920x1080) и масштабный коэффициент до 100%, и он работает нормально. Возможно, вам придется перезагрузить компьютер.
Что это значит?
Сначала давайте посмотрим на смысл
java.lang.ClassNotFoundException
:Брошено, когда приложение пытается загрузить в класс через его имя строки, используя:
- Метод
forName
в классеClass
.- Метод
findSystemClass
в classClassLoader
.- Метод
loadClass
в классеClassLoader
., но определение класса с указанным именем не найдено.
Обычно это происходит при попытке открыть соединение вручную в этой форме:
String jdbcDriver = "...'; //name of your driver Class.forName(jdbcDriver);
Или когда вы ссылаетесь на класс, принадлежащий внешней библиотеке, и Странно этот класс не может быть загружен, когда сервер приложений пытается развернуть приложение.
Давайте посмотрим на смысл
java.lang.NoClassDefFoundError
(выделение мое):Брошено, если виртуальная машина Java или экземпляр
ClassLoader
пытается загрузить в определении класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием новое выражение), и определение класса не может быть найдено.Определение класса поиска для поиска существовало при компиляции текущего исполняемого класса, но определение больше не может быть найдено.
В последней части говорится все: класс существует во время компиляции, т. е. когда я скомпилировал приложение через мою среду IDE, но он недоступен во время выполнения, т. е. когда приложение развернуто.
< blockquote>Как это исправить?
В веб-приложениях Java все сторонние библиотеки, используемые вашим приложением, должны быть в папке WEB-INF / lib. Убедитесь, что все необходимые библиотеки (банки) размещены там. Вы можете легко проверить это:
- <webapp folder> - WEB-INF - lib + jar1 + jar2 + ... - META-INF - <rest of your folders>
Эта проблема обычно возникает для JDBC-подключений (MySQL, Derby, MSSQL, Oracle и т. Д.) Или веб-фреймворков MVC, таких как JSF или Spring MVC.
Учтите, что некоторые сторонние библиотеки полагаются на другие сторонние библиотеки, поэтому вам нужно добавить все их в WEB-INF / lib, чтобы приложение работало. Хорошим примером этого является библиотека RichFaces 4, , где вы должны загружать и добавлять внешние библиотеки вручную .
Примечание для пользователей Maven : вы не должны испытывать эти проблемы, если вы не установили библиотеки как
provided
,test
илиsystem
. Если установлено значениеprovided
, вы несете ответственность за добавление библиотек где-нибудь в пути к классам. Здесь вы можете найти дополнительную информацию о областях зависимостей: Введение в механизм зависимостей
В случае, если библиотека должна быть разделена между несколькими приложениями, которые будут развернуты в вашем приложении сервер, например MySQL для двух приложений, есть еще одна альтернатива. Вместо того, чтобы развернуть два военных файла, каждый со своей собственной библиотекой соединителей MySQL, поместите эту библиотеку в общую библиотечную папку серверного приложения, это позволит библиотеке быть в пути к классам всех развернутых приложений.
Эта папка отличается от сервера приложений.
- Tomcat 7/8:
<tomcat_home>
/ lib- JBoss 7 / Wildfly:
<jboss_home>
/ standalone / lib
Класс должен существовать под WEB-INF / classes или находиться внутри файла .jar в разделе WEB-INF / lib. Убедитесь, что он делает.
Такая же проблема со мной.
Возможно, одна из ваших библиотек использует некоторые внутренние классы, которые недоступны
в вашей зависимости lib или maven pom.xml.
Thats означает, что вы анализируете свои журналы ошибок и идентифицируете эти классы, а затем импортируете все зависимости в папке maven или lib.
Я исправил эту ошибку тем же способом.
, потому что некоторые из моих библиотек используют internal.jar и json.jar внутри.