maven報錯:找不到符號
語言:和並用
場景:存在java呼叫程式碼的情況
maven版本:3.5.1
IDE:IDEA 2017.1
maven報錯:找不到符號
並列出找不到的類或程式所在的程式包、位置
在一開始遇到maven問題時,網路上可以搜到的資料基本支援以下幾種情況:
1.清理cache
- 使用mvn clean命令清理
- 使用IDEA裡面的Invalid Cache清理
2.編碼格式不統一
- 在pom.xml中將compiler的編碼格式設為UTF-8
點選(此處)摺疊或開啟
-
<plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-compiler-plugin</artifactId>
-
<version>3.5.1</version>
-
<configuration>
-
<source>1.8</source>
-
<target>1.8</target>
-
<encoding>UTF-8</encoding>
-
</configuration>
- </plugin>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
3.IDE和專案本身的jdk版本不統一
- 檢查IDE編譯使用的jdk版本和在pom.xml中配置的jdk版本是否統一
4.pom的依賴問題
以上4種情況的解決方法,詳細可參考 http://blog.csdn.net/u012062455/article/details/52347099。
上述問題是在網路中搜尋得到的主要幾種情況,但和我的情況均不相符,無法解決我的問題。
對錯誤進行定位後,我發現,專案中的scala程式碼和java程式碼均可以正常單獨編譯,但同時編譯會報錯。首先,排除了程式碼位於不同包的情況的影響;進一步定位後發現,錯誤出現在,使用java程式碼呼叫scala程式碼時,也就是說,我在java程式碼中,只要import了scala的類,就會報錯。
原因定位後,在stackoverflow的一個不太相關的問題的評論中看到了這樣一句話,大意是,若在java程式碼中呼叫了scala程式碼,則需先編譯scala程式碼,後編譯java程式碼。
這句話以後,茅塞頓開,現給出兩種解決方法:
- 使用mvn命令控制編譯順序
-
點選(此處)摺疊或開啟
- mvn clean scala:compile compile
- 1
-
在pom.xml裡面配置編譯順序
這部分我研究不深,因此只給出一個成功的配置方案。 -
點選(此處)摺疊或開啟
-
<plugin>
-
<groupId>org.scala-tools</groupId>
-
<artifactId>maven-scala-plugin</artifactId>
-
<version>2.15.1</version>
-
<executions>
-
<execution>
-
<id>scala-compile</id>
-
<phase>process-resources</phase>
-
<goals>
-
<goal>compile</goal>
-
</goals>
-
</execution>
-
<execution>
-
<id>scala-test-compile</id>
-
<phase>process-test-resources</phase>
-
<goals>
-
<goal>testCompile</goal>
-
</goals>
-
</execution>
-
</executions>
-
</plugin>
-
<plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-compiler-plugin</artifactId>
-
<version>3.5.1</version>
-
<configuration>
-
<source>1.8</source>
-
<target>1.8</target>
-
<encoding>UTF-8</encoding>
-
</configuration>
-
</plugin>
-
<plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-jar-plugin</artifactId>
-
<configuration>
-
<source>1.8</source>
-
<target>1.8</target>
-
<encoding>UTF-8</encoding>
-
</configuration>
-
<executions>
-
<execution>
-
<goals>
-
<goal>test-jar</goal>
-
</goals>
-
</execution>
-
</executions>
- </plugin>
-
<plugin>
下面將敘述一個我比較困惑的情況,望不吝解答。
我將列出一個pom.xml的示例,裡面也有配置scala-compile的順序,使用scala-compile-first這樣的字樣進行控制。
但該配置,在實際使用中,在工程1裡可行,但工程2裡會報錯,然而我兩個工程裡的配置,順序幾乎放的一樣,只不過工程2中可能多引入了很多dependency,配置如下:
這是我失敗情況的配置,不要使用。
這裡的scala-compile-first起到的是什麼作用,為什麼失效了呢?
在找到問題所在之後,再進行搜尋,發現已有文件提出,若使用java呼叫scala,需要先編譯scala的情況,比如http://www.cnblogs.com/yako/p/5730552.html。
由此可見,對於自己需要查詢的問題, 關鍵詞總結的本領,還要繼續加強。
@轉載: http://blog.csdn.net/ilvchocolate/article/details/75626921
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2143510/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 找不到符號符號
- UNIX下@符號報SP2-0734錯誤符號
- shell報錯:未預期的符號***附近有語法錯誤符號
- lombok編譯遇到“找不到符號的問題”Lombok編譯符號
- 關於VS報無法解析外部符號的錯誤符號
- 【maven】Maven報錯 zip END header not foundMavenHeader
- Error:(233, 25) java: 找不到符號 位置 類ErrorJava符號
- 解決UNIX下@符號報SP2-0734錯誤符號
- 錯別字和標點符號符號
- 報錯ReferenceError: require is not defined,找不到requireErrorUI
- eclipse建maven pom報錯EclipseMaven
- eclipse用Maven構建SpringMVC環境報錯找不到springmvc包下的Dispatcher類EclipseMavenSpringMVC
- maven本地倉庫有jar包,但是每次重新整理pom報錯找不到映象檔案MavenJAR
- Emoji表情符號錄入MySQL資料庫報錯的解決方案符號MySql資料庫
- 編譯總提示找不到符號,搞了一週多,快瘋了編譯符號
- maven打包報錯:在類路徑或引導類路徑中找不到程式包 java.langMavenJava
- Maven編譯elasticsearch-analysis-ik報錯Maven編譯Elasticsearch
- 無符號數相減得到的是無符號還是有符號?符號
- idea 報錯maven [ERROR] Maven execution terminated abnormally (exit code 1)IdeaMavenErrorORM
- [C]有符號數和無符號數符號
- CSS @ 符號CSS符號
- 特殊符號符號
- 符號使用符號
- 符號(註釋符+轉義符+接續符)符號
- MyEclipse 新建maven專案:錯誤: 找不到或無法載入主類EclipseMaven
- 除錯工具TRW2000,VB符號除錯初步(轉)除錯符號
- 解決eclipse的maven依賴報錯EclipseMaven
- 新建maven專案pom報錯的問題Maven
- 一些執行maven命令的報錯Maven
- Glide4.x + Butterknife 的超級大坑(找不到符號 類GlideApp)符號IdeaAPP
- 【JavaWeb錯誤集錦】有關Cookie不支援逗號、空格等特殊符號並報出伺服器500錯誤的解決方案JavaWebCookie符號伺服器
- 關於有符號與無符號的位元組符號
- iOS應用崩潰日誌.crash報告符號化/.dYSM符號表手動解析(Objective-C)iOS應用崩潰符號Object
- 符號連結符號
- Google Map 符號Go符號
- Html 特殊符號HTML符號
- PHP基本符號PHP符號
- Shell 符號(轉)符號