差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:gradle:build_jar [2016/09/16 17:00] tony |
java:gradle:build_jar [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
{{tag>gradle}} | {{tag>gradle}} | ||
====== Build jar ====== | ====== Build jar ====== | ||
+ | ===== Introduction ===== | ||
+ | 建立jar檔是build的基本,目的可能是為了建立可執行jar檔或給其它專案參考的jar檔。本篇主要記載我所遇到的問題。 | ||
===== Encoding Error ===== | ===== Encoding Error ===== | ||
如果是已經能夠在eclipse上成功編譯了,通常在加入以下宣告後,就能成功build出jar檔: | 如果是已經能夠在eclipse上成功編譯了,通常在加入以下宣告後,就能成功build出jar檔: | ||
行 17: | 行 19: | ||
} | } | ||
</code> | </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就是考慮到封裝問題吧! 不過還沒找到根本原因,以後有機會使用到gradle再研究看看。 | ||
===== Deprecation and Unchecked Warning ===== | ===== Deprecation and Unchecked Warning ===== | ||
編譯時非常有可能因為程式碼或引用函式庫的關係,出現Deprecation與Unchecked Warning:\\ | 編譯時非常有可能因為程式碼或引用函式庫的關係,出現Deprecation與Unchecked Warning:\\ | ||
{{:java:gradle:gradle_depracation_unchecked_warning.png|}}\\ | {{:java:gradle:gradle_depracation_unchecked_warning.png|}}\\ | ||
- | 我們可以在compileJava中加入以下宣告,去看詳細內容了解原因: | + | 我們可以在compileJava中加入以下宣告,去看詳細內容了解原因並解決: |
<code bash> | <code bash> | ||
compileJava { | compileJava { | ||
行 26: | 行 38: | ||
} | } | ||
</code> | </code> | ||
+ | 以Deprecation來說,就是去使用新的API介面;Unchecked如果確認無礙,就宣告@SuppressWarnings("unchecked")。 | ||
+ | |||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ |