缺少包和java類
下載好Netty的源碼后,導入到IDE,運行自帶的example時編譯不通過。
如下圖,是因為io.netty.util.collection的包沒有
點進去看,確實沒有這個包
發現貓膩
發現這個common包下有一個templates包,放的應該是模板。還有一個script包,放的應該是腳本。
看一下這個腳本,應該是替換掉下面模板文件名的K字母,替換成Byte、Char等單詞,生成如ByteObjectHashMap、CharObjectHashMap。。。的類
如何運行腳本生成java類
知道了這個原理,那怎么運行這個腳本的呢?
我們看他是groovy結尾的,應該是需要groovy的一個插件,pom文件里也確實有這個插件
怎么用這個插件運行腳本呢?
選中這個common項目右鍵選擇Run Maven - compile
運行失敗
不好意思,報了一堆錯,錯誤信息缺失一片空白
打開對應的java文件,也是沒有任何錯誤提示的,難搞。。。
解決運行失敗
別急,慢慢看。把錯誤拉到最后看
粘出來錯誤信息:
E:\idea_work\netty-4.1\common\src\main\resources\META-INF\native-image\io.netty\common\native-image.properties:0: invalid newline character (expected: CRLF) [Newline]
E:\idea_work\netty-4.1\common\src\main\resources\META-INF\native-image\io.netty\common\native-image.properties:1: 文件未以空行結尾。 [NewlineAtEndOfFile]
說這個文件以空行結尾。納尼。。。
打開這個文件看看,確實如此。那我們把這個空行刪了。再試試吧。
很遺憾,還是這個錯哈哈哈。。。
最終解決辦法
不過,還有解決辦法。
百度了一下,可以跳過這個樣式檢查,解決辦法來自於這里
1、在編譯的時候加一個參數:-Dcheckstyle.skip=true。
2、
或者是在pom中加<skip>true</sikp>,如
<project> ... <build> ... <plugins> ... <plugin> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> ... </plugins> ... </build> ... </project>
再次編譯
編譯成功
果然好了。在target下生成了對應的文件。