IDEA打开他人项目,配置完tomcat后无法起动,出现java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访

当在IDEA中打开并配置了Tomcat的他人项目后,遇到启动失败的问题,错误提示为'java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]'。这个问题通常是由于JDBC配置文件中的数据库连接信息错误导致,如URL路径、用户名或密码不正确。解决办法是检查并修正JDBC配置文件中的错误信息,确保数据库名称、用户名和密码的准确性。
05-Apr-2022 13:36:21.263 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [4.0]。将使用默认版本。
05-Apr-2022 13:36:25.155 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
05-Apr-2022 13:36:27.749 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
05-Apr-2022 13:36:27.752 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
05-Apr-2022 13:36:27.778 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [ROOT] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
05-Apr-2022 13:36:27.779 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [ROOT] 注册了JDBC驱动程序 [com.mysql.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
[2022-04-05 01:36:27,806] Artifact ssm2105:war exploded: Error during artifact deployment. See server log for details.
05-Apr-2022 13:36:30.368 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\service\apache-tomcat-8.5.53\webapps\manager]
05-Apr-2022 13:36:30.471 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\service\apache-tomcat-8.5.53\webapps\manager] has finished in [103] ms
05-Apr-2022 13:36:32.303 信息 [Abandoned connection cleanup thread] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
	java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
		at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378)
		at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1030)
		at com.mysql.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:90)
		at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:63)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)

产生原因:

由于JDBC配置文件中的配置文件内容有误。配置文件内容如下:

#jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/fe?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.username=root
jdbc.password=123456
jdbc.init=5
jdbc.minIdle=3
jdbc.maxActive=5

需要注意的地方:1、URL路径中数据库的名称是否正确

                             2、用户名和密码是否正确

解决方法:把JDBC配置文件中不正确的地方修正即可。

### 解决 IDEA 启动时报 `javax.websocket.server.ServerContainer not available` 错误 当在 IntelliJ IDEA 中启动应用程序并遇到 `java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available` 的异常时,这通常意味着 WebSocket 配置存在问题。以下是几种可能的原因及解决方案: #### 方法一:调整 WebSocket 配置加载条件 如果项目仅需在特定环境下启用 WebSocket 功能,则可以通过使用 `@Profile` 注解来控制 `ServerEndpointExporter` Bean 的创建时机。 ```java @Configuration @EnableWebSocket public class WebSocketConfig { @Bean @Profile({"dev", "test"}) public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } } ``` 这种方法可以防止在不需要 WebSocket 支持的情况下尝试初始化该组件[^4]。 #### 方法二:移除或禁用不必要的 WebSocket 组件注册 对于某些场景下确实不需要 WebSocket 或者暂时不想处理相关逻辑的情况,可以选择直接注释掉整个 WebSocket 配置文件中的关键部分,比如取消 `@Configuration` 和其他关联的注解声明。 ```java // @Configuration // @EnableWebSocket public class WebSocketConfig { // @Bean // public ServerContainer serverContainer() { // return new ServerContainer(); // } } ``` 不过需要注意的是这种方式并不推荐作为长期解决方案,因为会失去对 WebSocket 特性的支持能力[^3]。 #### 方法三:确认嵌入式容器版本兼容性 确保所使用的 Spring Boot 应用程序内置 Tomcat 容器版本能够良好地支持 WebSocket 协议。有时升级到最新稳定版或者指定一个已知良好的依赖范围可以帮助解决问题。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <!-- 如果有必要 --> <properties> <tomcat.version>9.0.x</tomcat.version> </properties> ``` 此外,在集成测试期间可能会由于 Web 环境设置不当而导致此问题发生。通过适当配置测试环境也可以缓解此类情况的发生[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值