Почему задача javac не создает классы - PullRequest
0 голосов
/ 25 августа 2010

У меня есть задача муравья, которая содержит задачу javac внутри.Он сообщает об ошибке в одном из классов, но сборка не дает сбоя, потому что она имеет failonerror = "false".Я предполагаю увидеть файлы классов в конце сборки, но я этого не вижу.Кто-нибудь может сказать мне почему?

Используемые свойства:

checkout.path=work/workingcopy
classpath.path=work/build/classes
log.file=work/log.txt

Код муравья:

<record name="${log.file}" action="start"/>     
<javac destdir="${classpath.path}" srcdir="${checkout.path}/src"
        debug="true" failonerror="false">
    <classpath>
        <path refid="webinf.lib"/>
        <path refid="tomcat.lib"/>
    </classpath>
</javac>
<record name="${log.file}" action="stop"/>

Файл журнала:

[javac] Compiling 169 source files to C:\work\build\classes
[javac] C:\work\workingcopy\src\com\mycompany\exception\handlerException\CustomExceptionHandler.java:25: cannot find symbol
[javac] symbol  : class RequestContextImpl
[javac] location: package org.primefaces.context
[javac] import org.primefaces.context.RequestContextImpl;
[javac]                              ^
[javac] C:\work\workingcopy\src\com\mycompany\exception\handlerException\CustomExceptionHandler.java:103: cannot find symbol
[javac] symbol  : class RequestContextImpl
[javac] location: class com.mycompany.exception.handlerException.CustomExceptionHandler
[javac]             new RequestContextImpl(ec);
[javac]                 ^
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 2 errors
[javac] Compile failed; see the compiler error output for details.

Ответы [ 3 ]

2 голосов
/ 25 августа 2010

Параметр failonerror предназначен для Ant, а не для javac. Так что если failonerror=false, тогда Ant продолжит вашу задачу, даже javac вернет ошибку.

Из документов:

failonerror Указывает, будут ли ошибки компиляции завершаться сборкой; по умолчанию true.

build - это процесс сборки Ant, а не javac!

1 голос
/ 20 декабря 2013

Используйте Eclipse Java Compiler (EJC) вместо стандартного Oracle Javac. Одним из преимуществ ECJ перед javac является то, что он допускает ошибки, он пытается компилировать как можно больше и сохраняет уже сгенерированные файлы классов. С javac это все или ничего.

EJC был разработан для использования в IDE, для высокоинтерактивной работы, где частичная компиляция является обязательной, но он также может использоваться как плагин CLI или Maven. Ребята из Plexus предоставляют EJC в качестве удобной зависимости от Maven.

Например, конфигурация ECJ в Maven, частичная компиляция, проверьте мой ответ на этот вопрос: Maven: частичная компиляция перед генерацией кода

0 голосов
/ 18 января 2011

У меня была такая же проблема.И это решение, которое я нашел в Интернете

Это зависит от того, какой компилятор вы на самом деле используете.Если вы используете javac 1.3, это то, что Sun делает по своему замыслу.(см. http://java.sun.com/j2se/1.3/docs/tooldocs/tools-changes.html для получения дополнительной информации, в частности, последнего абзаца первого пункта.) Попробуйте использовать более старый компилятор или компилятор jikes от IBM.И javac 1.2.2, и jikes 1.13 будут производить вывод для классов, которые компилируются, даже если другой файл в наборе файлов этого не делает.Джей

С уважением, Майкл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...