问题 java.lang.IllegalStateException:已设置endPosTable


试图建立一个alexa(亚马逊:回声)技能组合。同时,尝试将此经验用作通过匕首2进行依赖注入的学习测试平台。但是,使用maven-2 cmd构建包:

mvn assembly:assembly -DdescriptorId=jar-with-dependencies package'. 

生成具有完整依赖项的zip jar会产生以下异常跟踪:

[INFO] ------------------------------------------------------------------------
[INFO] Building Echo Device Client 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ echo-device-client ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/apil.tamang/Dropbox/Git/echo-device-client/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ echo-device-client ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 46 source files to /Users/apil.tamang/Dropbox/Git/echo-device-client/target/classes
An exception has occurred in the compiler (1.8.0_60). Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report.  Thank you.
java.lang.IllegalStateException: endPosTable already set
        at com.sun.tools.javac.util.DiagnosticSource.setEndPosTable(DiagnosticSource.java:136)
        at com.sun.tools.javac.util.Log.setEndPosTable(Log.java:350)
        at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:667)
        at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.<init>(JavacProcessingEnvironment.java:892)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.next(JavacProcessingEnvironment.java:921)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1187)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
        at com.sun.tools.javac.main.Main.compile(Main.java:523)
        at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
        at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)

初始编译很好,所有测试都运行并成功执行。我觉得在“连接”事物向南的依赖关系期间。请看一下 这个文件 在构建期间查看控制台输出。

我的问题是,如果尝试使用不同的方式生成依赖项是值得的。我不太了解maven的目的。是否有可以使用的补丁或其他东西?你认为甚至可以提出一个解决方法吗?我希望能够继续使用dagger 2框架来构建这个项目。


12257
2018-04-04 17:06


起源



答案:


错误报告中描述了该问题 JDK-8067747

作者:Jan Lahoda

据我所知,这个bug存在两个方面:

  1. 它碰到异常的javac错误。我正在研究这个问题,但请注意,当修复此问题时,javac将不会编译输入,它会从Filer抛出一个适当的异常(见下文)。

  2. 似乎是一个maven bug:当项目使用“clean install”编译时,注释处理器将生成一个源文件到“target / generated-sources / annotations”。增量编译完成后,此生成的文件将作为输入传递给javac,注释处理器将尝试再次生成它,这是不允许的。

这意味着当maven bug被修复时, javac用不恰当的例外报告问题的错误变得无关紧要。但是,考虑到Maven 2的生命终结的实际日期,我怀疑你可以找到它的修复或补丁。


10
2018-04-05 08:45



来自maven上的文档:“程序集的使用:程序集,程序集:附件,程序集:目录和程序集:目录内联不推荐使用,因为它们会破坏正常的构建过程并促进非标准构建实践。”我有一种感觉,一个不同的实用命令可以解决我遇到的问题。如果我过去的话会发布决议。与此同时,你有什么想法? - apil.tamang
tl;博士 - mvn clean - RobEarl


答案:


错误报告中描述了该问题 JDK-8067747

作者:Jan Lahoda

据我所知,这个bug存在两个方面:

  1. 它碰到异常的javac错误。我正在研究这个问题,但请注意,当修复此问题时,javac将不会编译输入,它会从Filer抛出一个适当的异常(见下文)。

  2. 似乎是一个maven bug:当项目使用“clean install”编译时,注释处理器将生成一个源文件到“target / generated-sources / annotations”。增量编译完成后,此生成的文件将作为输入传递给javac,注释处理器将尝试再次生成它,这是不允许的。

这意味着当maven bug被修复时, javac用不恰当的例外报告问题的错误变得无关紧要。但是,考虑到Maven 2的生命终结的实际日期,我怀疑你可以找到它的修复或补丁。


10
2018-04-05 08:45



来自maven上的文档:“程序集的使用:程序集,程序集:附件,程序集:目录和程序集:目录内联不推荐使用,因为它们会破坏正常的构建过程并促进非标准构建实践。”我有一种感觉,一个不同的实用命令可以解决我遇到的问题。如果我过去的话会发布决议。与此同时,你有什么想法? - apil.tamang
tl;博士 - mvn clean - RobEarl


我不确定这是否有帮助。对于我的情况,我遇到了同样的问题 open-jdk  8u91,我安装了oracle-jdk,之后我可以运行该项目 mvn clean compile。问题是我必须在JDK之间切换每次运行并再次使用maven构建它。

编辑:经过两天的挣扎,我发现它是由于 两者之间不匹配  maven 和 jdk。我的IDE使用maven 3.0.5作为捆绑的maven。

:在IDE中,您应该更改maven主目录 bundled maven 以您当前的版本为例 /usr/share/maven(对我来说当前版本是3.3.9) 


0
2018-03-05 13:46





我遇到了与Maven和JDK 1.8.0_121构建和测试的项目相同的错误。在原始配置中,项目首先通过清理 mvn clean,然后建立使用 mvn install -projectSpecificParameters 最后用一个单独的测试 mvn install -otherProjectSpecificParameters。此配置导致问题中提到的错误。

更改阶段的顺序(首先测试,然后建立)并添加一个 clean构建命令的目标是在测试之后清除构建状态,错误不再可再现。


0
2018-05-31 11:51





如中所述 这个问题,解决方法是禁用 useIncrementalCompilation

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>

    <configuration>
        <useIncrementalCompilation>false</useIncrementalCompilation>
    </configuration>
</plugin>

0
2018-02-12 03:05