[
https://issues.apache.org/jira/browse/MCHANGES-410?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Osipov updated MCHANGES-410:
------------------------------------
Fix Version/s: 3.0.0
> Can not use announcement with OpenJDK 15
> ----------------------------------------
>
> Key: MCHANGES-410
> URL: https://issues.apache.org/jira/browse/MCHANGES-410
> Project: Maven Changes Plugin
> Issue Type: Bug
> Components: announcement
> Affects Versions: 2.12.1
> Environment: openjdk 15.0.1 2020-10-20
> OpenJDK Runtime Environment (build 15.0.1+9-18)
> OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
> Reporter: David Pilato
> Priority: Major
> Fix For: 3.0.0
>
>
> Hi!
> I was trying to [release a
> project|https://github.com/dadoonet/elasticsearch-beyonder] today and my task
> {{mvn changes:announcement-send}} failed with:
> {code}
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
> goal org.apache.maven.plugins:maven-changes-plugin:2.12.1:announcement-mail
> (default-cli) on project elasticsearch-beyonder: Execution default-cli of
> goal org.apache.maven.plugins:maven-changes-plugin:2.12.1:announcement-mail
> failed: Unable to load the mojo 'announcement-mail' in the plugin
> 'org.apache.maven.plugins:maven-changes-plugin:2.12.1'. A required class is
> missing: com/sun/net/ssl/internal/ssl/Provider
> {code}
> So I started to look at the stacktrace:
> {code}
> at
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo
> (DefaultMavenPluginManager.java:539)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:124)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:208)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:154)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:146)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:117)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:81)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:128)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:64)
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:43)
> at 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)
> Caused by: java.lang.NoClassDefFoundError:
> com/sun/net/ssl/internal/ssl/Provider
> at org.apache.maven.plugin.announcement.AnnouncementMailMojo.<init>
> (AnnouncementMailMojo.java:229)
> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0
> (Native Method)
> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
> (NativeConstructorAccessorImpl.java:64)
> at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
> (DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstanceWithCaller
> (Constructor.java:500)
> at java.lang.reflect.Constructor.newInstance (Constructor.java:481)
> at
> com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance
> (DefaultConstructionProxyFactory.java:86)
> at com.google.inject.internal.ConstructorInjector.provision
> (ConstructorInjector.java:105)
> at com.google.inject.internal.ConstructorInjector.access$000
> (ConstructorInjector.java:32)
> at com.google.inject.internal.ConstructorInjector$1.call
> (ConstructorInjector.java:89)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:115)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:133)
> at com.google.inject.internal.ProvisionListenerStackCallback.provision
> (ProvisionListenerStackCallback.java:68)
> at com.google.inject.internal.ConstructorInjector.construct
> (ConstructorInjector.java:87)
> at com.google.inject.internal.ConstructorBindingImpl$Factory.get
> (ConstructorBindingImpl.java:267)
> at com.google.inject.internal.InjectorImpl$2$1.call
> (InjectorImpl.java:1016)
> at com.google.inject.internal.InjectorImpl.callInContext
> (InjectorImpl.java:1103)
> at com.google.inject.internal.InjectorImpl$2.get (InjectorImpl.java:1012)
> at com.google.inject.internal.InjectorImpl.getInstance
> (InjectorImpl.java:1051)
> at org.eclipse.sisu.space.AbstractDeferredClass.get
> (AbstractDeferredClass.java:48)
> at com.google.inject.internal.ProviderInternalFactory.provision
> (ProviderInternalFactory.java:81)
> at
> com.google.inject.internal.InternalFactoryToInitializableAdapter.provision
> (InternalFactoryToInitializableAdapter.java:53)
> at com.google.inject.internal.ProviderInternalFactory$1.call
> (ProviderInternalFactory.java:65)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:115)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:133)
> at com.google.inject.internal.ProvisionListenerStackCallback.provision
> (ProvisionListenerStackCallback.java:68)
> at com.google.inject.internal.ProviderInternalFactory.circularGet
> (ProviderInternalFactory.java:63)
> at com.google.inject.internal.InternalFactoryToInitializableAdapter.get
> (InternalFactoryToInitializableAdapter.java:45)
> at com.google.inject.internal.InjectorImpl$2$1.call
> (InjectorImpl.java:1016)
> at com.google.inject.internal.InjectorImpl.callInContext
> (InjectorImpl.java:1092)
> at com.google.inject.internal.InjectorImpl$2.get (InjectorImpl.java:1012)
> at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
> at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
> at org.eclipse.sisu.plexus.LazyPlexusBean.getValue
> (LazyPlexusBean.java:51)
> at org.codehaus.plexus.DefaultPlexusContainer.lookup
> (DefaultPlexusContainer.java:263)
> at org.codehaus.plexus.DefaultPlexusContainer.lookup
> (DefaultPlexusContainer.java:255)
> at
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo
> (DefaultMavenPluginManager.java:519)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:124)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:208)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:154)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:146)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:117)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:81)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:128)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:64)
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:43)
> at 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)
> Caused by: java.lang.ClassNotFoundException:
> com.sun.net.ssl.internal.ssl.Provider
> at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass
> (SelfFirstStrategy.java:50)
> at
> org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass
> (ClassRealm.java:271)
> at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass
> (ClassRealm.java:247)
> at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass
> (ClassRealm.java:239)
> at org.apache.maven.plugin.announcement.AnnouncementMailMojo.<init>
> (AnnouncementMailMojo.java:229)
> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0
> (Native Method)
> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
> (NativeConstructorAccessorImpl.java:64)
> at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
> (DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstanceWithCaller
> (Constructor.java:500)
> at java.lang.reflect.Constructor.newInstance (Constructor.java:481)
> at
> com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance
> (DefaultConstructionProxyFactory.java:86)
> at com.google.inject.internal.ConstructorInjector.provision
> (ConstructorInjector.java:105)
> at com.google.inject.internal.ConstructorInjector.access$000
> (ConstructorInjector.java:32)
> at com.google.inject.internal.ConstructorInjector$1.call
> (ConstructorInjector.java:89)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:115)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:133)
> at com.google.inject.internal.ProvisionListenerStackCallback.provision
> (ProvisionListenerStackCallback.java:68)
> at com.google.inject.internal.ConstructorInjector.construct
> (ConstructorInjector.java:87)
> at com.google.inject.internal.ConstructorBindingImpl$Factory.get
> (ConstructorBindingImpl.java:267)
> at com.google.inject.internal.InjectorImpl$2$1.call
> (InjectorImpl.java:1016)
> at com.google.inject.internal.InjectorImpl.callInContext
> (InjectorImpl.java:1103)
> at com.google.inject.internal.InjectorImpl$2.get (InjectorImpl.java:1012)
> at com.google.inject.internal.InjectorImpl.getInstance
> (InjectorImpl.java:1051)
> at org.eclipse.sisu.space.AbstractDeferredClass.get
> (AbstractDeferredClass.java:48)
> at com.google.inject.internal.ProviderInternalFactory.provision
> (ProviderInternalFactory.java:81)
> at
> com.google.inject.internal.InternalFactoryToInitializableAdapter.provision
> (InternalFactoryToInitializableAdapter.java:53)
> at com.google.inject.internal.ProviderInternalFactory$1.call
> (ProviderInternalFactory.java:65)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:115)
> at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
> (ProvisionListenerStackCallback.java:133)
> at com.google.inject.internal.ProvisionListenerStackCallback.provision
> (ProvisionListenerStackCallback.java:68)
> at com.google.inject.internal.ProviderInternalFactory.circularGet
> (ProviderInternalFactory.java:63)
> at com.google.inject.internal.InternalFactoryToInitializableAdapter.get
> (InternalFactoryToInitializableAdapter.java:45)
> at com.google.inject.internal.InjectorImpl$2$1.call
> (InjectorImpl.java:1016)
> at com.google.inject.internal.InjectorImpl.callInContext
> (InjectorImpl.java:1092)
> at com.google.inject.internal.InjectorImpl$2.get (InjectorImpl.java:1012)
> at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
> at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
> at org.eclipse.sisu.plexus.LazyPlexusBean.getValue
> (LazyPlexusBean.java:51)
> at org.codehaus.plexus.DefaultPlexusContainer.lookup
> (DefaultPlexusContainer.java:263)
> at org.codehaus.plexus.DefaultPlexusContainer.lookup
> (DefaultPlexusContainer.java:255)
> at
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo
> (DefaultMavenPluginManager.java:519)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:124)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:208)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:154)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:146)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:117)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:81)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:128)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:64)
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:43)
> at 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)
> {code}
> And found that:
> {code}
> Caused by: java.lang.NoClassDefFoundError:
> com/sun/net/ssl/internal/ssl/Provider
> at org.apache.maven.plugin.announcement.AnnouncementMailMojo.<init>
> (AnnouncementMailMojo.java:229)
> {code}
> The [source
> code|http://svn.apache.org/viewvc/maven/plugins/tags/maven-changes-plugin-2.12.1/src/main/java/org/apache/maven/plugin/announcement/mailsender/ProjectJavamailMailSender.java?view=markup#l86]
> shows:
> {code:java}
> if ( isSslMode() )
> {
> try
> {
> // Try to load the SSL Provider class before we use it, it
> isn't present in non-Sun JVMs
> this.getClass().getClassLoader().loadClass(
> "com.sun.net.ssl.internal.ssl.Provider" );
> Security.addProvider( new
> com.sun.net.ssl.internal.ssl.Provider() );
> props.put( "mail.smtp.socketFactory.port", String.valueOf(
> getSmtpPort() ) );
> props.put( "mail.smtp.socketFactory.class", SSL_FACTORY );
> props.put( "mail.smtp.socketFactory.fallback", "false" );
> }
> catch ( ClassNotFoundException e )
> {
> getLogger().error( "You can't use sslMode because your system
> is missing an SSL Provider.", e );
> }
> }
> {code}
> So I tried to run it with:
> {code:xml}
> <sslMode>false</sslMode>
> {code}
> But it was failing with the same error. Which is expected as the code was
> failing while calling the ctor not while running the {{initialize()}} method.
> In fact, I think that this line is wrong as the compiler is probably linking
> to this class and because this class can not be found at runtime (using
> OpenJDK 15), it fails to create an instance.
> {code:java}
> Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() );
> {code}
> I created a sample project which reproduces the behavior.
> {code:xml}
> <?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>org.example</groupId>
> <artifactId>maven-changes-plugin</artifactId>
> <version>1.0-SNAPSHOT</version>
> <properties>
> <maven.compiler.source>15</maven.compiler.source>
> <maven.compiler.target>15</maven.compiler.target>
> </properties>
> <dependencies>
> <dependency>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-changes-plugin</artifactId>
> <version>2.12.1</version>
> </dependency>
> </dependencies>
> </project>
> {code}
> {code:java}
> package fr.pilato.test.maven.changes;
> import
> org.apache.maven.plugin.announcement.mailsender.ProjectJavamailMailSender;
> public class Launcher {
> public static void main(String[] args) {
> new ProjectJavamailMailSender();
> }
> }
> {code}
> Let me know if I can provide any other details.
> Thanks!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)