1. Maven异常

很多初学者在刚开始使用maven构建项目时,总会时不时的遇到一些解决不了的问题,让人抓耳挠腮,花费很长的时间想办法进行解决。今天老谢就来给大家说一个最简单、最实用的方法,教你一招搞定Maven中的问题。我们先看看下面这个常见的Maven问题:

严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
java.net.BindException: Address already in use: JVM_Bind <null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:407)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:623)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
        at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341)
        at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startContainer(AbstractRunMojo.java:1238)
        at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(AbstractRunMojo.java:592)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

我们乍一看这个错误信息,就可以发现,这明显是因为8080端口被占用了!如果你把当前的IDE根据关闭,然后重新启动项目,结果会发现,还是会显示这样错误!然后你就陷入无尽的怀疑和痛苦中,这到底是因为什么呢。

2. 异常原因

老谢给大家解释下该问题的原因:

这是因为我们在开发过程中,开启了tomcat服务器,但没有正常关闭们,进而导致进程一直在后台运行

结果后来你又继续开启了一个新的tomcat服务器,导致端口被占用,而无法正常启动。

那这个问题又该怎么解决呢?

3. 解决办法

你只需要按照老谢的以下解决办法,就能根治此错误:

  • 打开任务管理器;
  • 找到所有带有java名称的进程;
  • 关闭掉它们。

异常处理丨启动Maven项目时遇到的那点麻烦事儿~_java

OK,这样以上的问题就都解决了!另外,你也可以用以上办法解决其他类似的问题哦。

4. 小结

我们作为初学者,在学习的过程中,总会遇到这样或者那样的问题,让我们感觉到进步的痛苦和无力。但我们需要做的就是坚持,每一个错误其实都是成功路上的垫脚石,当登上巅峰回首过往,你会发现原来我们最恐惧的事情其实就是战胜恐惧时的未知!