我目前正在从eclipse运行jetty作为外部java程序。问题是当我终止jetty并且我再次尝试重新启动它时,由于端口仍然在使用,它不能。
我要做的是打开Windows任务管理器并手动终止java进程。你如何让码头很好地关闭/终止/结束?
以下是我的maven jetty应用程序设置
参数:jetty:run-war
MAVEN_OPTS:-Xdebug -Xnoagent -Djava.compiler = NONE -Xrunjdwp:transport = dt_socket,address = 8080,server = y,suspend = y
设置suspend = n似乎也无法解决问题。
答案 0 :(得分:1)
如果java应用程序没有关闭,那是因为一个活着的非守护进程线程。尝试获取正在运行的maven进程的线程转储,例如使用VisualVM并查看是什么让应用程序保持活跃状态。
答案 1 :(得分:0)
您可以通过“Run Jetty Run”Eclipse插件运行应用程序,而不是Maven jetty插件。 Eclipse可以更直接地控制新的JVM。
答案 2 :(得分:0)
我不熟悉maven插件,但是当使用start.jar启动jetty时,可以使用stop.jar让它正常关闭(从版本4.something开始)。
Stopping JettyPrograms started with the start.jar mechanism may be stopped with the stop.jar:
java -jar stop.jarThis connects via a local port to stop the server. The default port can be set with the STOP.PORT system property
或者,也许更多你喜欢的,你可以通过编写这样的类,并运行main方法在eclipse中完成:
java -jar stop.jar
答案 3 :(得分:0)
似乎我忘记勾选“允许终止远程VM”。奇怪的是它之前似乎没有用。