2016-07-22 19 views
3

我在IntelliJ IDEA 2016.1.3中有java項目,我正在構建成jar文件(Build - > build artifacts ...-> build),一切運行良好,直到我想使用外部庫(org.apache.commons:commons-lang3:3.4),沒什麼大不了的,它在IDE中工作。但解壓縮的jar需要依賴。 如何做到這一點?IntelliJ IDEA:如何把maven的依賴關係放到構建的神器的正確位置

我已經嘗試過做項目結構 - >項目設置 - >工件 - >並添加爲庫。 enter image description here

看罐子神器: enter image description here

的希望dependecy罐子位於罐子神器的根文件夾中,但仍收到此錯誤,當嘗試使用代碼。

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 
.... 
.... 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 37 more 

我錯過了什麼?

+0

它看起來像你想要一個「胖罐子」,那裏的罐子有它裏面的類路徑罐子。這通常需要額外的處理;我使用Spring Boot,並且Spring Boot Maven插件執行此操作。還有一些其他非春季特定的重新包裝商。 – chrylis

+0

謝謝@chrylis,我希望intelliJ爲我做:( 那麼在最後,我匆忙,我只需要一種方法_countMatches_ – ThinkDeep

+0

'私人int countMatches(@NotNull字符串源,@NotNull字符串模式)(int idx = 0;(idx = source.indexOf(pattern,idx))!= - 如果(!source.isEmpty()&&!pattern.isEmpty()){count = 0; 1; IDX + = pattern.length()){ 計數++;} 返回計數; }否則{ 返回0; } }' – ThinkDeep

回答

0

正如我在上面評論中提到的,我使用了自定義實現而不是整個庫。

但在另一個項目中,我剛剛碰到同樣的問題,這一次nanohttpd,這當然是不容易實現自己像在以前的用法:d

我發現的順序神器/ Maven依賴關係的創建很重要 因爲我像之前一樣首次添加了依賴關係,但是在爲工件創建配置之前。

,瞧,依賴已經被提取並最終artifactory的效果很好:) enter image description here

相關問題