Как я могу решить java.lang.IllegalStateException: незаконный доступ:? - PullRequest
0 голосов
/ 03 октября 2019

Я использую Eclipse для разработки веб-приложения. Все работало нормально, но иногда, когда я пытался опубликовать-> запустить свой сервер, я получал следующую ошибку:

Oct 03, 2019 6:52:55 PM org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading
INFO: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1383)
    at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1036)
    at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117)
    at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

Первые несколько раз я просто перезагружал сервер, и он работал нормально, но теперь даже перезапуск doesent решить проблему. Я читал об этом в Интернете, и некоторые источники упоминали, что это может быть проблемой управления потоками, но я не мог пойти дальше этого. Кто-нибудь может предоставить информацию? Спасибо.

1 Ответ

0 голосов
/ 04 октября 2019

Драйвер mysql пытается выполнить очистку при завершении работы веб-приложения, и это хорошо. К сожалению, он пытается загрузить дополнительные классы для выполнения этой очистки и - поскольку веб-приложение закрывается - загрузка классов больше не доступна. В идеале, драйвер должен загружать все классы, необходимые для очистки при загрузке, - это позволило бы избежать этой проблемы.

Если вы можете выяснить, какие классы он пытается загрузить - проверка драйвераисходный код должен показать вам, какие - тогда вы сможете загрузить их самостоятельно при запуске приложения, например, ServletContextListener.

...