struts2改springboot过程中⼀些问题及解决办法记录
1、引⼊依赖包的问题
⼀般情况下,常⽤的jar包在maven仓库都可以到,并能知道如何在l⽂件中配置,但是有时候需要在⼀些项⽬中使⽤⼀些我们⾃⼰写的代码⽣成的jar包,要引⼊maven中就需要做⼀些必要的处理。
我们项⽬中就有这样的情况存在,以下是处理⽅式之⼀,就是⽤maven的命令⽣成maven⽅式的jar,然后加⼊到本地库中引⽤,打包命令如下:
mvn install:install-file -Dfile=huateng-comm-1.0.0.jar -DgroupId=com.huateng  -DartifactId=huateng-comm -Dversion=1.0.0 -Dpackaging=jar
2、使⽤maven给spring boot项⽬打jar包的问题
2.1、由于eclipse中默认配置的 installed jres是jre⽽不是jdk,导致打包时抛出如下异常:
Caused by: org.apache.maven.pluginpiler.CompilationFailureException: Compilation failure
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
解决办法是把eclipse中的installed jres改为jdk。
2.2、没有指定启动类导致打包抛出如下异常
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project mobileShopFrontDemo: There are test failures.
解决办法是在maven的l⽂件中做如下配置:
com.MobileShopFrontDemoApplication
maven打包本地jar包也就是指定启动类。
3、logback相关jar版本问题:
原本⾮spring boot的⽼项⽬使⽤的logback版本是1.1.2,现在⽤了spring boot1.4.3,默认引⼊的logback的版本是1.1.7。
在原本的项⽬中l⽂件中有如下⽇志配置:
<appender name="FILE" class="ch.olling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>G:/logs/${app_name}_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP">
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>365</maxHistory>
</rollingPolicy>
......
</appender>
新的spring boot项⽬在不改动l的情况下启动抛出如下异常:
Exception in thread "main" java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.joran.spi.Interpreter@20:13 - no applicable action for [Encoding], current ElementPath  is [[configuration][appender][Encodi ng]]
解决办法是去掉如下配置:
<Encoding>UTF-8</Encoding>
4、启动spring boot的启动类抛出异常
这个问题其实怪⾃⼰,我⽤maven⽣成了项⽬的jar在cmd窗⼝运⾏着,但是忘记了这件事,⼜在eclipse中启动了这个项⽬,从⽽导致端⼝占⽤,eclipse中启动不起来。
只不过在查看控制台的错误的时候,我从下⽹上看,⾸先看到的是如下异常:
Caused by: java.lang.ClassNotFoundException: lipse.jetty.server.NetworkConnector
at java.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
于是我以为是jetty的什么问题,就去⽹上搜了⼀下,但是还没搜出结果的时候我偶然想起来在cmd窗⼝还启动着⼀个应⽤,于是去控制台⼀看,果然看到了这样的提⽰:
java.BindException: Address already in use: bind
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:124)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
lipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
lipse.jetty.server.AbstractConnector.
很显然是端⼝被占⽤了,换个新的端⼝,成功启动。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。