2012-07-16 128 views
0

我目前正在为Jenkins CI制作一个插件。我正在尝试创建一个新的Project类型,并且遇到了一些编译我的代码的问题。我在詹金斯代码库中看到以下工作:Java中内部类的名称解析

// 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] 

我在做什么错?

回答

1

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

只是说因为至少有一个版本的AbstractBuild(1.312)没有它。

+0

对普通的Java开发人员来说可能很明显,但我甚至没有考虑过我使用的是旧版本的依赖关系。当你创建一个项目时自动选择的是1.424(在检查出该版本时,似乎没有AbstractBuildExecution)。 – 2012-07-16 13:55:39

+0

if normal = expect that _anything_ can wrong wrong,then yeah,it obvious :) – 2012-07-17 00:47:53