【问题标题】:Compile failed; see the compiler error output for details编译失败;有关详细信息,请参阅编译器错误输出
【发布时间】:2011-12-29 12:18:23
【问题描述】:

当我尝试编译 build.xml 文件时,出现以下错误:

构建失败

C:\Users\workspace\testrepo\src\build.xml:36: Compile failed; see the compiler error output for details.
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1150)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:912)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)

有人可以帮我吗?

【问题讨论】:

  • 看起来实际的错误消息可能比我们看到的要高,这一切都告诉我们 build.xml 在第 36 行附近的某个地方失败了,我猜这是它试图编译你的 Java 源代码的地方代码。你的 Java 代码肯定有问题,你用的是 IDE 吗?
  • 在我的日志中,我有 [javac] C:\Users\workspace\testrepo\src\testrepo\testrepoclass.java:3: 错误:包 org.junit 不存在 [javac] 导入org.junit.After

标签: java ant


【解决方案1】:

在构建过程中早些时候发生了编译错误。在同一输出日志文件中查找该错误并尝试修复它。

【讨论】:

  • 感谢您的回答。我收到一个警告警告:'includeantruntime' 未设置,默认为 build.sysclasspath=last;为可重复构建设置为 false。是因为那个警告吗??
  • 不,这应该不是问题。
  • 在我的日志中,我有 [javac] C:\Users\workspace\testrepo\src\testrepo\testrepoclass.java:3: 错误:包 org.junit 不存在 [javac] 导入org.junit.After;
  • 是的......这就是问题所在。在 javac 的类路径中包含 JUnit jar 应该可以解决问题。
  • 我复制了 Jnuit Jar 文件并粘贴到 C:\eclipse\jre\bin 中,即 JAVA_HOME 路径。即使那样我也遇到了同样的问题。
【解决方案2】:

要查看日志中的编译错误,请使用以下给定命令:

d:\yourdirectory of checkout>ant clean deploy>log.txt

它将在您的签出目录中创建一个完整的日志。所以现在你可以在那里检查实际错误。

【讨论】:

  • 2021 年 12 月,上面的命令对我不起作用,但很简单:ant > log.txt
【解决方案3】:

以下解决方案对我很有帮助:

1) 定义如下类:

package somepackage;

import org.apache.tools.ant.taskdefs.Javac;
import org.apache.tools.ant.types.Commandline;
import org.eclipse.jdt.core.JDTCompilerAdapter;

public class JDTCompiler15 extends JDTCompilerAdapter {
    @Override
    public void setJavac(Javac attributes) {
        if (attributes.getTarget() == null) {
                attributes.setTarget("1.6");
        }
        if (attributes.getSource() == null) {
                attributes.setSource("1.6");
        }

        super.setJavac(attributes);
    }
        // THIS METHOD IS RESPONSIBLE FOR PRINGTING THE ERRORS/WARNING.
    @Override
    protected void logAndAddFilesToCompile(Commandline cmd) {
        super.logAndAddFilesToCompile(cmd);
        System.err.println(cmd.toString());
    }

}

2) 添加以下VM参数:-Dbuild.compiler=somepackage.JDTCompiler15

【讨论】:

  • 感谢您节省了我的时间:D 考虑通过以下方式扩展此代码:'boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib :jdwp") > 0; if (isDebug) { logger.debug(cmd.toString()); } '
【解决方案4】:

如果使用Weblogic生成客户端,必须将安装目录下的“weblogic.jar”添加到Additional Classpath中,这样Ant才会知道Ant.tools....的存在位置。

我遇到了同样的问题,我正在尝试解决这个问题,而不是将其添加为额外的类路径,因为我将所有 jar 复制到我的项目中,但仍然出现此错误。

【讨论】:

    【解决方案5】:

    在我的例子中,一个类中有一个未使用的 import 语句,它的包在其他地方找不到,但被复制了,因为我从我的另一个项目中复制了该类。即使错误日志本身并不明确,它也会在错误日志中列为“找不到包”。我必须搜索在我的案例中生成的所有警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 2018-10-27
      • 2021-10-31
      • 2017-10-06
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多