【问题标题】:Name resolution of inner classes in JavaJava内部类的名称解析
【发布时间】:2012-07-16 04:27:17
【问题描述】:

我目前正在尝试为 Jenkins CI 制作一个插件。我正在尝试创建一个新的项目类型,但在编译我的代码时遇到了一些问题。我在 Jenkins 代码库中看到了以下工作:

// hudson/model/AbstractBuild.java
package hudson.model;
public abstract class AbstractBuild<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>> extends Run<P,R> implements Queue.Executable {
    public abstract class AbstractBuildExecution extends Runner {
        // ...
    }
}

// hudson/matrix/MatrixBuild.java
package hudson.matrix;
public class MatrixBuild extends AbstractBuild<MatrixProject,MatrixBuild> {
    public class MatrixBuildExecution extends AbstractBuildExecution {
        // ...
    }
}

这两个文件编译得很好。当我尝试在我的插件中做同样的事情时......

package parallelbuild;
public class ParallelBuild extends AbstractBuild<ParallelProject,ParallelBuild> {
    public class ParallelBuildExecution extends AbstractBuildExecution {
        // ...
    }
}

Maven 给了我来自 javac 的以下错误。

[ERROR] /home/jsternberg/jenkins-parallel-build/parallel-build/src/main/java/parallelbuild/ParallelBuild.java:[29,48] cannot find symbol
[ERROR] symbol  : class AbstractBuildExecution
[ERROR] location: class parallelbuild.ParallelBuild
[ERROR] /home/jsternberg/jenkins-parallel-build/parallel-build/src/main/java/parallelbuild/ParallelBuild.java:[29,48] cannot find symbol
[ERROR] symbol  : class AbstractBuildExecution
[ERROR] location: class parallelbuild.ParallelBuild
[ERROR] -> [Help 1]

我做错了什么?

【问题讨论】:

    标签: java jenkins scope inner-classes


    【解决方案1】:

    您的 POM 是否使用包含具有内部 AbstractBuildExecution 类的 AbstractBuild 的版本?

    之所以这么说,是因为至少有一个版本的 AbstractBuild (1.312) 没有它。

    【讨论】:

    • 对于普通的 Java 开发人员来说可能很明显,但我什至没有考虑到我使用的是旧版本的依赖项。创建项目时自动选择的版本是 1.424(在签出该版本时,它似乎没有 AbstractBuildExecution)。
    • 如果 normal=期望 anything 可能出错,那么是的,很明显 :)
    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2020-07-30
    • 2017-11-11
    • 2021-06-14
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多