Skip to content

NPE for PosixFileAttributeView.readAttributes on windows #418

@Postremus

Description

@Postremus

While running a mvnd -Dquickly on https://github.com/quarkusio/quarkus, I encounter the following exception on windows.
This only happens in some specific modules, see reproduction steps.

I believe this is caused by a missing / incorrect null check

private void fixLastModifiedTimeZipEntries() throws IOException {
long timeMillis = getLastModifiedTime().toMillis();
Path destFile = getDestFile().toPath();
PosixFileAttributes posixFileAttributes = Files.getFileAttributeView(
destFile, PosixFileAttributeView.class, LinkOption.NOFOLLOW_LINKS)
.readAttributes();
FileAttribute<?>[] attributes;
if (posixFileAttributes != null) {

getFileAttributeView can return null if the PosixFileAttributeView is not available - which is most likely the case since I am using windows.

(introduced with #333)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.5.0:jar (default-jar) on project quarkus-class-change-agent: Error assembling JAR: Cannot invoke "java.nio.file.attribute.PosixFileAttributeView.readAttributes()" because the return value of "java.nio.file.Files.getFileAttributeView(java.nio.file.Path, java.lang.Class, java.nio.file.LinkOption[])" is null -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.5.0:jar (default-jar) on project quarkus-class-change-agent: Error assembling JAR
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error assembling JAR
    at org.apache.maven.plugins.jar.AbstractJarMojo.createArchive (AbstractJarMojo.java:338)
    at org.apache.maven.plugins.jar.AbstractJarMojo.execute (AbstractJarMojo.java:358)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at com.gradle.maven.cache.extension.c.n.a (SourceFile:53)
    at com.gradle.maven.cache.extension.c.d.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.q.a (SourceFile:23)
    at com.gradle.maven.cache.extension.c.j.a (SourceFile:28)
    at com.gradle.maven.cache.extension.c.p.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.b.c (SourceFile:118)
    at com.gradle.maven.cache.extension.c.b.a (SourceFile:62)
    at com.gradle.maven.cache.extension.c.g.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.a.a (SourceFile:46)
    at com.gradle.maven.cache.extension.c.o.a (SourceFile:18)
    at com.gradle.maven.cache.extension.c.a.a (SourceFile:46)
    at com.gradle.maven.cache.extension.c.c.a (SourceFile:26)
    at com.gradle.maven.cache.extension.c.h$1.run (SourceFile:35)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute (SourceFile:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute (SourceFile:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute (SourceFile:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute (SourceFile:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute (SourceFile:166)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute (SourceFile:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run (SourceFile:47)
    at com.gradle.maven.cache.extension.c.h.a (SourceFile:31)
    at com.gradle.maven.cache.extension.c.m.a (SourceFile:80)
    at com.gradle.maven.cache.extension.g.b.lambda$createProxy$0 (SourceFile:77)
    at jdk.proxy13.$Proxy85.execute (Unknown Source)
    at com.gradle.maven.scan.extension.internal.e.b.executeMojo (SourceFile:116)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: java.lang.NullPointerException: Cannot invoke "java.nio.file.attribute.PosixFileAttributeView.readAttributes()" because the return value of "java.nio.file.Files.getFileAttributeView(java.nio.file.Path, java.lang.Class, java.nio.file.LinkOption[])" is null                                                                                                                               
    at org.codehaus.plexus.archiver.jar.JarToolModularJarArchiver.fixLastModifiedTimeZipEntries (JarToolModularJarArchiver.java:158)
    at org.codehaus.plexus.archiver.jar.JarToolModularJarArchiver.postCreateArchive (JarToolModularJarArchiver.java:143)
    at org.codehaus.plexus.archiver.AbstractArchiver.createArchive (AbstractArchiver.java:920)
    at org.apache.maven.archiver.MavenArchiver.createArchive (MavenArchiver.java:603)
    at org.apache.maven.plugins.jar.AbstractJarMojo.createArchive (AbstractJarMojo.java:333)
    at org.apache.maven.plugins.jar.AbstractJarMojo.execute (AbstractJarMojo.java:358)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at com.gradle.maven.cache.extension.c.n.a (SourceFile:53)
    at com.gradle.maven.cache.extension.c.d.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.q.a (SourceFile:23)
    at com.gradle.maven.cache.extension.c.j.a (SourceFile:28)
    at com.gradle.maven.cache.extension.c.p.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.b.c (SourceFile:118)
    at com.gradle.maven.cache.extension.c.b.a (SourceFile:62)
    at com.gradle.maven.cache.extension.c.g.a (SourceFile:27)
    at com.gradle.maven.cache.extension.c.a.a (SourceFile:46)
    at com.gradle.maven.cache.extension.c.o.a (SourceFile:18)
    at com.gradle.maven.cache.extension.c.a.a (SourceFile:46)
    at com.gradle.maven.cache.extension.c.c.a (SourceFile:26)
    at com.gradle.maven.cache.extension.c.h$1.run (SourceFile:35)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute (SourceFile:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute (SourceFile:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute (SourceFile:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute (SourceFile:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute (SourceFile:166)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute (SourceFile:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run (SourceFile:47)
    at com.gradle.maven.cache.extension.c.h.a (SourceFile:31)
    at com.gradle.maven.cache.extension.c.m.a (SourceFile:80)
    at com.gradle.maven.cache.extension.g.b.lambda$createProxy$0 (SourceFile:77)
    at jdk.proxy13.$Proxy85.execute (Unknown Source)
    at com.gradle.maven.scan.extension.internal.e.b.executeMojo (SourceFile:116)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

To reproduce:

git clone github.com/quarkusio/quarkus
cd core/class-change-agent
mvn clean package

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions