Java 使用Apache Beam Core(2.2.0)的Maven Core编译(9.0.4)抛出异常-MonthOfYear的值无效

Java 使用Apache Beam Core(2.2.0)的Maven Core编译(9.0.4)抛出异常-MonthOfYear的值无效,java,linux,maven,ubuntu,Java,Linux,Maven,Ubuntu,我在ubuntu 16中编译maven时遇到了问题。它正在编译到其他机器中的代码是相同的,所以看起来问题与某些环境变化有关,可能是自动更新 如果我再花一天时间在这上面,我可能会尝试格式化机器,从头开始。但是,也许这个问题可以帮助其他人找到解决方案,而不必这么做 $ mvn compile [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-project --- [INFO] Using 'UTF-8

我在ubuntu 16中编译maven时遇到了问题。它正在编译到其他机器中的代码是相同的,所以看起来问题与某些环境变化有关,可能是自动更新

如果我再花一天时间在这上面,我可能会尝试格式化机器,从头开始。但是,也许这个问题可以帮助其他人找到解决方案,而不必这么做

$ mvn compile

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/me/projects/my-project/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.5:compile (default-compile) @ my-project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 28 source files to /home/me/projects/my-project/target/classes
An exception has occurred in the compiler (9.0.4). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0
    at java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
    at java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:714)
    at java.base/java.time.LocalDate.of(LocalDate.java:269)
    at java.base/java.time.LocalDateTime.of(LocalDateTime.java:336)
    at jdk.zipfs/jdk.nio.zipfs.ZipUtils.dosToJavaTime(ZipUtils.java:109)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem$Entry.cen(ZipFileSystem.java:1950)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem$Entry.readCEN(ZipFileSystem.java:1937)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.getEntry(ZipFileSystem.java:1324)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newInputStream(ZipFileSystem.java:550)
    at jdk.zipfs/jdk.nio.zipfs.JarFileSystem.isMultiReleaseJar(JarFileSystem.java:91)
    at jdk.zipfs/jdk.nio.zipfs.JarFileSystem.<init>(JarFileSystem.java:67)
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:134)
    at jdk.compiler/com.sun.tools.javac.file.JavacFileManager$ArchiveContainer.<init>(JavacFileManager.java:517)
    at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getContainer(JavacFileManager.java:319)
    at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.list(JavacFileManager.java:715)
    at jdk.compiler/com.sun.tools.javac.code.ClassFinder.list(ClassFinder.java:722)
    at jdk.compiler/com.sun.tools.javac.code.ClassFinder.scanUserPaths(ClassFinder.java:655)
    at jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:526)
    at jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:293)
    at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$PackageSymbol.members(Symbol.java:1120)
    at jdk.compiler/com.sun.tools.javac.code.Symtab.listPackageModules(Symtab.java:810)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:344)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:529)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:285)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:300)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:570)
    at jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:554)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1052)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:923)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:171)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:884)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] An unknown compilation problem occurred
[INFO] 1 error
[INFO] -------------------------------------------------------------
pom.xml:

        ...
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5</version>
            <!-- 
               already try to fix using
               <version>3.7.0</version>
            -->
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19.1</version>
            ...
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
        </plugin>
        ...
可能有用但无法解决问题的链接:

更新。。。 只有在以下情况下才会出现问题:

  • 一个内部项目进入maven依赖项
  • 项目至少有一个单一测试,即使单一测试没有任何作用
  • 项目至少有一个类,即使该类什么都不做
现在,我尝试将这个依赖项目作为源代码加载,以尝试发现触发问题的调用、类或方法

随着时间的推移,我们试图测试同一个代码,将问题“隔离”到另一台机器中,一切都正常了。因此,目前来看,问题似乎是在特殊环境中执行的一些java调用组合的结果

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>my.projects</groupId>
        <artifactId>project-parent</artifactId>
        <version>1.234.567</version>
    </parent>
    <artifactId>my-buggy-project</artifactId>
    <version>0.${minor.version}</version>
    <properties>
        <minor.version>123.456.789</minor.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>my.projects.models</groupId>
            <artifactId>models</artifactId>
            <version>111.222.333</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>my-buggy-project</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
我的项目
项目父级
1.234.567
我的马车项目
0.${minor.version}
123.456.789
我的
模型
111.222.333
朱尼特
朱尼特
4.12
测试
我的马车项目
src/main/resources
真的
maven编译器插件
3.7.0
1.8
1.8

问题是由版本2.2.0中的beam SDK java core包引起的。此包正在加载到包my.projects.models中

以下是复制相同错误消息的独立程序:

./pom.xml ./src/test/java/com/mock/bug/DummyHealthCheckTest.java 用于触发错误消息的命令: 如果我们将beam SDK java核心版本从2.2.0更改为2.1.0,则可以成功编译和测试该项目

虽然这些信息不足以解决问题,也不足以说明为什么这只发生在某些机器上,但我相信这是可以从中得出的最佳答案


我已经与Apache Beam团队就此事创建了一个问题请求

您是否执行了错误消息特别要求您执行的操作?因为该项目的源代码是公司财产,我不确定允许我对其应用何种外部评估。我正在尝试将问题隔离到非敏感数据中,然后运行诊断工具。首先,此:
0。${minor.version}
将在生成过程中生成警告…解决此问题:。除此之外,您是否已经使用较新版本的maven编译器插件进行了测试?如果是,是否有错误消息?
$ sudo apt-get update; sudo apt-get upgrade 
$ mvn -U clean package
$ sudo update-alternatives --config java # changing to oracle java 8
$ sudo update-alternatives --config java # changing to open jdk 8
$ sudo update-alternatives --config java # changing to oracle java 9
$ sudo update-alternatives --config java # changing to open jdk 9
$ mvn dependency:resolve -U
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>my.projects</groupId>
        <artifactId>project-parent</artifactId>
        <version>1.234.567</version>
    </parent>
    <artifactId>my-buggy-project</artifactId>
    <version>0.${minor.version}</version>
    <properties>
        <minor.version>123.456.789</minor.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>my.projects.models</groupId>
            <artifactId>models</artifactId>
            <version>111.222.333</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>my-buggy-project</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mock.bug</groupId>
    <artifactId>mock-bug</artifactId>
    <version>0.123</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.beam</groupId>
            <artifactId>beam-sdks-java-core</artifactId>
            <version>2.2.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
 package com.mock.bug;

public class Main {
    public void main(String[] input){
        System.out.println("hello workd");
    }
}
package com.mock.bug;

import org.junit.Test;

import static org.junit.Assert.*;

public class DummyHealthCheckTest {
    @Test
    public void DummyCheckTest() {
        boolean t = true;
        assertTrue(t);
    }
}
mvn -U clean package