閱讀426 返回首頁    go 技術社區[雲棲]


struts2改spring boot過程中一些問題及解決辦法記錄

1、引入依賴包的問題
一般情況下,常用的jar包在maven倉庫都可以找到,並能知道如何在pom.xml文件中配置,但是有時候需要在一些項目中使用一些我們自己寫的代碼生成的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包的問題
由於eclipse中默認配置的 installed jres是jre而不是jdk,導致打包時拋出如下異常:

Caused by: org.apache.maven.plugin.compiler.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。

3、logback相關jar版本問題:
原本非spring boot的老項目使用的logback版本是1.1.2,現在用了spring boot1.4.3,默認引入的logback的版本是1.1.7。
在原本的項目中logback.xml文件中有如下日誌配置:

<appender name="FILE" >
        <Encoding>UTF-8</Encoding>
        <rollingPolicy >
            <fileNamePattern>G:/logs/${app_name}_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy > 
                 <maxFileSize>200MB</maxFileSize> 
            </timeBasedFileNamingAndTriggeringPolicy>       
            <maxHistory>365</maxHistory>
        </rollingPolicy>
          ...... 
    </appender>

新的spring boot項目在不改動logback.xml的情況下啟動拋出如下異常:

Exception in thread "main" java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.joran.spi.Interpreter@20:13 - no applicable action for [Encoding], current ElementPath  is [[configuration][appender][Encoding]]

解決辦法是去掉如下配置:

<Encoding>UTF-8</Encoding>

4、啟動spring boot的啟動類拋出異常
這個問題其實怪自己,我用maven生成了項目的jar在cmd窗口運行著,但是忘記了這件事,又在eclipse中啟動了這個項目,從而導致端口占用,eclipse中啟動不起來。
隻不過在查看控製台的錯誤的時候,我從下網上看,首先看到的是如下異常:

Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.NetworkConnector
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

於是我以為是jetty的什麼問題,就去網上搜了一下,但是還沒搜出結果的時候我偶然想起來在cmd窗口還啟動著一個應用,於是去控製台一看,果然看到了這樣的提示:

java.net.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)
    at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
    at org.eclipse.jetty.server.AbstractConnector.

很顯然是端口被占用了,換個新的端口,成功啟動。

最後更新:2017-09-12 13:32:38

  上一篇:go  嵌入式工控機主板在自動售貨機的應用
  下一篇:go  一篇文章學會spring boot(包括jms和hessian的集成)