差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:gradle:build_jar [2016/09/16 17:59]
tony [Compiler Error - cannot find symbol of the inner class]
java:gradle:build_jar [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​gradle}} 
-====== Build jar ====== 
-===== Encoding Error ===== 
-如果是已經能夠在eclipse上成功編譯了,通常在加入以下宣告後,就能成功build出jar檔:​ 
-<code bash> 
-jar { 
-    baseName = '​TonylinUtil'​ 
-    version =  '​1.0.0'​ 
-} 
-</​code>​ 
-然而我出現了encoding為MS950問題:​\\ 
-{{:​java:​gradle:​gradle_encoding_problem.png|}}\\ 
-雖然我檔案儲存編碼為UTF-8,但gradle卻以系統編碼做為預設去編譯。因此,我加入以下宣告設定encoding:​ 
-<code bash> 
-compileJava { 
-    options.encoding = '​UTF-8'​ 
-} 
-</​code>​ 
-===== Compiler Error - cannot find symbol of the inner class ===== 
-某個類別中有個inner class,而那個inner class使用gradle編譯時會出現以下錯誤:​\\ 
-{{:​java:​gradle:​gradle_compile_problem_with_innerclass_of_interface.png|}}\\ 
-參考此[[http://​stackoverflow.com/​questions/​28174433/​gradle-compilejava-cannot-find-symbol-from-source-file|link]]提及使用完整的package名稱可以解決此問題,一試果然可以解決:​ 
-<code java> 
-tatic interface MyKernel32 extends Library 
--> 
-tatic interface MyKernel32 extends com.sun.jna.Library 
-</​code>​ 
  
-===== Deprecation and Unchecked Warning ===== 
-編譯時非常有可能因為程式碼或引用函式庫的關係,出現Deprecation與Unchecked Warning:\\ 
-{{:​java:​gradle:​gradle_depracation_unchecked_warning.png|}}\\ 
-我們可以在compileJava中加入以下宣告,去看詳細內容了解原因並解決:​ 
-<code bash> 
-compileJava { 
-    options.compilerArgs << "​-Xlint:​unchecked"​ << "​-Xlint:​deprecation"​ 
-} 
-</​code>​ 
-以Deprecation來說,就是去使用新的API介面;Unchecked如果確認無礙,就宣告@SuppressWarnings("​unchecked"​)。