安装OracleXE后Vaadin项目Jetty启动报错退出问题求助
从错误日志中的Address already in use: bind可以判断,Jetty默认使用的8080端口已经被其他进程占用,结合你安装Oracle XE 11g的操作可知,Oracle XE 11g内置的HTTP管理服务默认会占用8080端口,这是问题的根本原因。你之前访问8080弹出的用户名密码验证框是Oracle的管理界面验证,和你的Vaadin项目无关。
解决方案
方案1:修改Jetty启动端口(操作最简单,无需修改Oracle配置)
有两种修改方式可选:
- 临时修改运行端口:运行Maven启动命令时追加端口参数,命令如下:
mvn jetty:run -Djetty.port=8081
启动后访问localhost:8081即可打开你的Vaadin项目,端口可自行替换为其他未被占用的端口。 - 永久修改Jetty插件配置:打开项目的
pom.xml,找到jetty-maven-plugin的配置节点,添加httpPort配置项,示例如下:
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.9.v20160517</version> <configuration> <httpPort>8081</httpPort> <!-- 原有其他配置保留即可 --> </configuration> </plugin>
修改后正常启动Jetty即可默认使用8081端口。
方案2:修改Oracle XE默认HTTP端口(适合需要继续使用8080端口跑项目的场景)
修改Oracle XE的内置HTTP服务端口,释放8080端口:
- 打开SQL Plus,使用system或sys管理员账户登录Oracle
- 执行以下命令修改HTTP端口为其他未被占用的端口(示例为8082,可自行调整):
exec dbms_xdb.sethttpport(8082); - 执行提交命令:
commit; - 重启Oracle XE相关服务,之后Oracle的HTTP服务就会使用新端口,8080端口释放后即可正常启动Jetty。
临时解决方案(设备重启后会失效)
如果只是临时测试,可以直接杀掉占用8080端口的进程:
- 打开命令提示符,执行以下命令查询占用8080端口的进程PID:
netstat -ano | findstr :8080 - 执行命令杀掉对应进程,将尖括号内容替换为查询到的PID号:
taskkill /F /PID <PID号>
杀掉进程后即可正常启动Jetty。
内容的提问来源于stack exchange,提问作者Zrebna
相关产品推荐
相关产品推荐

