2011-11-27 50 views
0

一个新的项目我碰到的,它带给了我的进步如蜗牛的主要障碍建设工作时不能访问OpenListResourceBundle。一些关于我的项目......这是一个注释处理工具很像AndroidAnnotations,用于扫描注释,并相应建立起来的Android特定的代码。Maven的错误:与注释处理器库

错误似乎涉及到的Java6注释处理,Android的API和Maven,只有当我从一个加工类中声明了Android API的类型的实例出现。下面是我运行错误,包括我的图书馆时到:

... 
[INFO] Compiling 5 source files to /mnt/hd1/home/john/dev/robotics-project/examples/simple/target/classes 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
error: cannot access sun.util.resources.OpenListResourceBundle 

    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:715) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure 
error: cannot access sun.util.resources.OpenListResourceBundle 

    at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:656) 
    at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
... 17 more 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Compilation failure 
error: cannot access sun.util.resources.OpenListResourceBundle 

这里是我的代码库:https://github.com/johncarl81/robotics

要重现错误,用以下内容替换TestController.java:

public class TestController { 

    @Inject 
    private SubComponent subComponent; 
    @Inject 
    private Activity activity; 
    public boolean validate() { 
     return subComponent != null && activity != null; 
    } 

} 

然后通过运行建立从根项目:

mvn clean install 

sun.util.resources.OpenListResourceBundle在类路径中可用,因为我在Ubuntu环境中运行java 1.6.0_26。我已经在多个ubuntu机器上以及具有完全相同问题的Windows上尝试了这一点。

什么尝试任何帮助或想法表示赞赏。

回答

0

问这个问题后,我又回到了绘图板,望着这是在批注处理阶段发生的一切。结果发现android.app.Activity类及其所有相关的类(参数类型等)正在被我的库分析。这似乎导致注释处理器触发对这些类的某种评论,这似乎包括提到的rt.jar类。这会导致错误,因为该类不能被编译器访问。

解决方案是在注释处理阶段修剪无关类的分析。

希望帮助任何人都可能会遇到这个问题在未来的(虽然可能不太可能)。