從這篇文章開始,記錄下工作中遇到的大坑及解決方法。
1. 代碼庫中的代碼與線上服務的代碼不一緻(有人修改了代碼不送出!!)
萬幸:代碼在打包時将src檔案打進了target/classes目錄中。
在使用maven compile時,預設是不包含java檔案的,需要在pom檔案中進行配置。配置方法如下:
下面時一個測試代碼的pom.xml檔案,重點關注resources标簽。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.fan.learn.increase</groupId>
<artifactId>increaseTest</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
<build>
<!--resources 解決maven預設編譯時,target目錄中不包含java源檔案的問題,隻包含resources目錄下的檔案和class檔案-->
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>.svn</exclude>
</excludes>
</resource>
<!--有了上面的配置,則預設的resources目錄中的檔案不會被拷貝到target/classes目錄下-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<verbose>true</verbose>
<!--<encoding>UTF-8</encoding>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
于是從線上伺服器上拷貝檔案到本地,進行修改、debug。
2.debug時,本地代碼代碼與伺服器上代碼不一緻
明明已經修改了本地代碼,加了一些日志資訊,重新編譯,部署到了伺服器。一方面該列印的日志沒有列印,另一方面在新添加的代碼處添加斷點加不上,總是對不上号。
檢視target/classes目錄下對應的源檔案是否是最新的,結果是剛剛修改後的代碼。
難道沒有給編譯?明明編譯成功了!
使用jd-gui( jd-gui的下載下傳位址 ) 工具檢視編譯出的class檔案與java檔案是否一緻。結果:不一緻!
突然想到源檔案src目錄下有源檔案。原來編譯完之後會将src目錄中的檔案拷貝到classes目錄中,将編譯出的class檔案覆寫了。
删除src目錄下的所有class檔案。這麼多,怎麼删除呢?
轉到src目錄下:
上面的指令解析:
find . -name *.class
在目前目錄下查找以.class為字尾的檔案
xargs rm -rf
對前面find找出的檔案執行删除操作
重新編譯、部署,問題解決!
3.網際網路是個開放的環境,各種字元都可能出現,一定要注意判斷特殊情況,使用好try catch。