java - jdk - maven-compiler-plugin maven



maven“找不到符號”的消息無益 (9)

即使我使用Java 7,maven 2.2.1並且得到了相同的錯誤,我從我的pom中刪除了<scope>tests</scope>並使用了

mvn clean -DskipTests=true install以成功構建我的項目,而不升級我的maven版本。

https://src-bin.com

這是一個非常簡單的問題,它可能是一個我不知道的地方,但谷歌對這個問題特別無益,給出了有關編譯錯誤的結果,而不是如何更改編譯錯誤消息。

當我用maven構建我的項目時,它會給我一些大致如下格式的錯誤消息:

[ERROR] /path/to/source/Main.java:[13,8]錯誤:找不到符號

當我使用ant或javac構建時,它實際上會告訴我它在錯誤消息中找不到的符號。 maven給了我一個行號和字符位置,但顯示實際符號會更有幫助。 上面的行是每個“找不到符號”錯誤的唯一行。 上面或下面沒有給出符號的線。 我想必須有一些方法讓maven告訴我這些信息,但我不知道它是什麼。 我嘗試了-e選項,因為mvn告訴我嘗試使用它,但它給出了錯誤的maven回溯,而不是實際的符號。

有幫助嗎?

這是mvn --version的輸出

Apache Maven 3.0.4 (rNON-CANONICAL_2012-10-24_11-25_mockbuild; 2012-10-24 07:25:04-0400)
Maven home: /usr/share/maven
Java version: 1.7.0_09-icedtea, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.6.6-1.fc17.x86_64", arch: "amd64", family: "unix"

這是一個示例(無用的)錯誤消息,正如maven的輸出(只是縮短了目錄):

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /path/to/source/SoundEngineFilePanel.java:[33,8] error: cannot find symbol
[ERROR]  class SoundEngineFilePanel
/path/to/source/SoundEngineFilePanel.java:[36,8] error: cannot find symbol
[INFO] 2 errors 
[INFO] -------------------------------------------------------------

它找不到的符號是“fakeThing”和“fakeThing2”,而不是SoundEngineFilePanel。


Answer #1

嘗試在項目上運行Maven安裝時,我在Eclipse STS中遇到了類似的問題。 我已經更改了該項目的pom.xml文件的依賴項中的某些版本以及這些依賴項所指向的項目。 我通過在我更改的所有項目上運行Maven安裝然後再次在原始項目上運行安裝來解決它。


Answer #2

如果您依賴於工作空間中的某些其他項目並且這些項目未正確構建,則可能會出現此類錯誤。 首先嘗試建立這樣的依賴項目,這可能有所幫助


Answer #3

我和maven有同樣的問題。 碰巧我的問題是,maven正在生成具有不同案例名稱的文件夾。 我期待一個.service.MyFile,但在目標文件夾中它是Service / MyFile,而java是區分大小寫的。 我花了幾個小時才發現,建議你看一下。


Answer #4

我猜測編譯器抱怨註釋無效。 我注意到Eclipse沒有顯示所有錯誤,比如註釋中數組末尾的逗號。 但標準的javac確實如此。


Answer #5

更新到3.1:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Answer #6

這不是Maven的功能; 它是編譯器的一個功能。 仔細觀察; 您正在尋找的信息最有可能出現在以下行中。


Answer #7

這是Maven編譯器插件中的一個bug ,我認為它與JDK7有關。 適用於JDK6。


Answer #8

通常,當您的編譯代碼版本與您編寫的代碼版本不同時,將出現此錯誤。 例如,編寫依賴於xxx-1.0.0.jar的代碼,即一個類具有方法A,但該方法在xxx-1.1.0.jar中更改為B. 如果使用xxx-1.1.0.jar編譯代碼,您將看到錯誤。





settings