差異處

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

連向這個比對檢視

java:gradle:build_jar [2016/09/16 18:00]
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> +
-static interface MyKernel32 extends Library +
--> +
-static interface MyKernel32 extends com.sun.jna.Library +
-</​code>​ +
-另外一個方式就是別用inner class,不過我想會用inner class就是考慮到封裝問題吧! +
-===== 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"​)。+