当前位置: 首页 > 知识库问答 >
问题:

如何使用 maven 获取完整的 javac 编译器错误?

苏弘盛
2023-03-14

我目前正在学习如何使用Maven构建我用Java编写的项目。以前,我只使用javac编译我的项目,我已经习惯了它产生的错误消息。我尝试使用mvn compilejavac手动编译以下错误的测试程序:

public class App {
    public static void main( String[] args )
    {
        System.out.print(a);
    }
}

Javac产生:

App.java:5: error: cannot find symbol
    System.out.print(a);
                     ^
  symbol:   variable a
  location: class App
1 error

但是< code > mvn compiler 会产生这个结果(在一堆其他堆栈跟踪和输出中):

...     
[ERROR] /home/htor/maven-test/cflat/src/main/java/no/uio/ifi/cflat/App.java:[5,25] error: cannot find symbol
[ERROR] -> [Help 1]
...

后者不如第一条错误消息有用,并且它不包含来自javac的完整错误消息。我尝试过使用-e-X,但错误报告完全相同,只是周围有更多噪音。

如何从Maven的错误消息中获取完整的Javac错误消息?

共有1个答案

程淮晨
2023-03-14

经过进一步搜索,似乎这种行为是由Maven编译器插件中的bug引起的。这个问题的解决方案解决了我的问题:maven“找不到符号”消息无济于事。只需将其添加到您的pom.xml文件中即可使用最新的编译插件:

<project>
    ...
    <build>
        ....
        <plugins>
            <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>
        </plugins>
    </build>
</project>
 类似资料:
  • 问题内容: 我正在尝试(从命令行)编译一个Java包,该包会导入我自己的另一个包。我正在网上关注教程,但是当我尝试编译最终的Java文件(CallPackage.java)时似乎出现错误。 这是文件结构: 这是CallPackage.java: 这是HelloWorld.java: 尝试的步骤 转到子包并使用编译HelloWorld.java 。 转到test_directory并使用编译Call

  • 问题:无法使用带有JDK 1.8的Jenkins构建Spring maven项目 描述:我使用Jenkins构建我的Spring项目,由Maven管理。我已经使用JDK安装选项在Jenkins中配置了Java 1.7和1.8。当在构建配置中选择Java 1.7并运行构建时,构建过程是成功的。但当我在构建配置中选择Java 1.8并运行构建时,构建过程会失败。 下面是 jenkins 控制台输出**

  • 我使用的是jaxb-api,V2.2.9如果有关系的话。Maven依赖项是 下面是正在发生的事情的更详细的输出... mojoSuccedeord.codehaus.mojo:sql-maven-plugin:1.5(create-test-db)mojoStarted org.apache.maven.plugin:maven-compiler-plugin:2.3.2(default-comp

  • 问题内容: 我在Java编译器中遇到一个错误,该错误中提交用于编译的文件顺序可能导致代码无法编译。我对代码进行了深入研究,以找出可以重现该问题的最小代码量,从而生成了三个源文件(每个源文件一个类)。 通过以特定顺序使用javac参数可以重现该问题。简而言之,为了成功,必须始终在使用该Actions类的Program类之前对其进行编译,否则javac不能以一种明智的方式对其进行处理: 发生编译错误时

  • null 无法定位tools.jar。应该在/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar中找到它 buildfile:/home/taylor/desktop/java/tcp/build.xml 构建-子项目:

  • 我正在刮网页使用JSoup库通过选择类属性,其中包含"nav"字符串。 这是获取网站超文本标记语言的代码: 正如您所看到的,id=“varPreviewMenu”的ul元素包含Jsoup检索到的HTML不包含的li元素。 我怎样才能得到那些元素?