nDijax
nDijax

Reputation: 521

NullPointerException when execute 'mvn liquibase:diff'

Hy jHipsters,

I've a null pointer exception when I run the mvn command line liquibase:diff on a @manyToMany relationship defined below

class user.java

@JsonIgnore
@ManyToMany
@JoinTable(name = "USER_PROJECT",
           joinColumns = {@JoinColumn(name="user_id", referencedColumnName="id")},
           inverseJoinColumns = {@JoinColumn(name="project_id", referencedColumnName="id")})
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Project> projects = new HashSet<>();

int the class project.java

@ManyToMany(mappedBy = "projects")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<User> users = new HashSet<>();

stack trace:

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.3.2:diff (default-cli) on project app: Error setting up or running Liquibase: liquibase.command.CommandExecutionException: java.lang.NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.liquibase:liquibase-maven-plugin:3.3.2:diff (default-cli) on project app: Error setting up or running Liquibase: liquibase.command.CommandExecutionException: java.lang.NullPointerException
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    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:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    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)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error setting up or running Liquibase: liquibase.command.CommandExecutionException: java.lang.NullPointerException
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:373)
    at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.execute(LiquibaseDatabaseDiff.java:145)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionException: java.lang.NullPointerException
    at liquibase.integration.commandline.CommandLineUtils.doDiffToChangeLog(CommandLineUtils.java:123)
    at liquibase.integration.commandline.CommandLineUtils.doDiffToChangeLog(CommandLineUtils.java:100)
    at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.performLiquibaseTask(LiquibaseDatabaseDiff.java:176)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:369)
    ... 23 more
Caused by: liquibase.command.CommandExecutionException: java.lang.NullPointerException
    at liquibase.command.AbstractCommand.execute(AbstractCommand.java:13)
    at liquibase.integration.commandline.CommandLineUtils.doDiffToChangeLog(CommandLineUtils.java:121)
    ... 26 more
Caused by: java.lang.NullPointerException
    at java.util.regex.Matcher.getTextLength(Matcher.java:1283)
    at java.util.regex.Matcher.reset(Matcher.java:309)
    at java.util.regex.Matcher.<init>(Matcher.java:229)
    at java.util.regex.Pattern.matcher(Pattern.java:1093)
    at liquibase.diff.output.StandardObjectChangeFilter$Filter.matches(StandardObjectChangeFilter.java:104)
    at liquibase.diff.output.StandardObjectChangeFilter.include(StandardObjectChangeFilter.java:70)
    at liquibase.diff.output.StandardObjectChangeFilter.includeMissing(StandardObjectChangeFilter.java:51)
    at liquibase.diff.output.changelog.ChangeGeneratorChain.fixMissing(ChangeGeneratorChain.java:28)
    at liquibase.diff.output.changelog.ChangeGeneratorFactory.fixMissing(ChangeGeneratorFactory.java:99)
    at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:145)
    at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:125)
    at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:76)
    at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:64)
    at liquibase.command.DiffToChangeLogCommand.run(DiffToChangeLogCommand.java:61)
    at liquibase.command.AbstractCommand.execute(AbstractCommand.java:8)
    ... 27 more

Thx for your help!

Upvotes: 1

Views: 2054

Answers (1)

CrazyRiver
CrazyRiver

Reputation: 314

WARNING NOT A CLEAN SOLUTION, some side effects. I share it anyway in case it helps.

I succeed to make it work by downgrading the liquibase version from 3.3.2 to 3.3.1. Here's more details:

    <liquibase-hibernate4.version>3.5</liquibase-hibernate4.version>
    <liquibase-slf4j.version>1.2.1</liquibase-slf4j.version>
    <liquibase.version>3.3.1</liquibase.version>

The liquibase:diff run without error and create a change log with my model's changes however it contains drop table directives of my Oauth2 database tables.

It seems the diffExcludeObjects in the liquibase's plugin configuration is ignored or is not working with version 3.3.1.

Some related links of similar issues:

https://github.com/jhipster/generator-jhipster/issues/754

https://github.com/liquibase/liquibase-hibernate/issues/76

Upvotes: 1

Related Questions