Skip to content

mavengem failing on Java 9+ #4

Closed
@kares

Description

@kares

could use a newer release with a JRuby upgrade
for now, still seems to be stucked with JRuby 1.7 which has issues on Java 11 (any Java >= 9)

using jruby-openssl ~ 0.9.5 - assumed the default key store type to be JKS, but it started returning PKCS12 on Java 9, thus we always fail on require 'openssl' :

org.jruby.exceptions.RaiseException: (OpenSSL::X509::StoreError) setting default path failed: No password supplied for PKCS#12 KeyStore

caused by :

java.lang.NullPointerException: No password supplied for PKCS#12 KeyStore.
	at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(Unknown Source)
	at java.base/java.security.KeyStore.load(KeyStore.java:1479)
	at org.jruby.ext.openssl.x509store.Lookup.loadDefaultJavaCACertsFile(Lookup.java:279)
	at org.jruby.ext.openssl.x509store.Lookup$ByFile.call(Lookup.java:428)
	at org.jruby.ext.openssl.x509store.Lookup$ByFile.call(Lookup.java:411)
	at org.jruby.ext.openssl.x509store.Lookup.control(Lookup.java:123)
	at org.jruby.ext.openssl.x509store.Lookup.loadFile(Lookup.java:92)
	at org.jruby.ext.openssl.x509store.Store.setDefaultPaths(Store.java:336)
	at org.jruby.ext.openssl.X509Store.set_default_paths(X509Store.java:161)
	at org.jruby.ext.openssl.X509Store$INVOKER$i$0$0$set_default_paths.call(X509Store$INVOKER$i$0$0$set_default_paths.gen)
Full Maven Log
[DEBUG] =======================================================================
[DEBUG] Skipped remote request for rubygems:jar-dependencies/maven-metadata.xml, locally cached metadata up-to-date.
[DEBUG] Using transporter WagonTransporter with priority -1.0 for mavengem:https://rubygems.org
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for mavengem:https://rubygems.org
Downloading from mavengems: mavengem:https://rubygems.org/rubygems/jar-dependencies/maven-metadata.xml
OpenSSL::X509::StoreError: setting default path failed: No password supplied for PKCS#12 KeyStore.
  set_default_paths at org/jruby/ext/openssl/X509Store.java:165
         SSLContext at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:31
                SSL at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:22
            OpenSSL at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:21
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:20
               load at org/jruby/RubyKernel.java:1087
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/openssl/ssl-internal.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/openssl/ssl-internal.rb:4
               load at org/jruby/RubyKernel.java:1087
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl.rb:21
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl/load.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl/load.rb:24
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/openssl.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/openssl.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/security.rb:1
            require at org/jruby/RubyKernel.java:1071
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
            require at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
             (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/shared/rubygems/security.rb:11
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.884 s
[INFO] Finished at: 2020-02-04T11:05:02+01:00
[INFO] ------------------------------------------------------------------------
---------------------------------------------------
constituent[0]: file:/opt/maven/conf/logging/
constituent[1]: file:/opt/maven/lib/wagon-provider-api-3.1.0.jar
constituent[2]: file:/opt/maven/lib/javax.inject-1.jar
constituent[3]: file:/opt/maven/lib/cdi-api-1.0.jar
constituent[4]: file:/opt/maven/lib/plexus-interpolation-1.24.jar
constituent[5]: file:/opt/maven/lib/guice-4.2.0-no_aop.jar
constituent[6]: file:/opt/maven/lib/org.eclipse.sisu.inject-0.3.3.jar
constituent[7]: file:/opt/maven/lib/maven-resolver-transport-wagon-1.1.1.jar
constituent[8]: file:/opt/maven/lib/maven-slf4j-provider-3.5.4.jar
constituent[9]: file:/opt/maven/lib/plexus-component-annotations-1.7.1.jar
constituent[10]: file:/opt/maven/lib/maven-compat-3.5.4.jar
constituent[11]: file:/opt/maven/lib/guava-20.0.jar
constituent[12]: file:/opt/maven/lib/jsr250-api-1.0.jar
constituent[13]: file:/opt/maven/lib/commons-lang3-3.5.jar
constituent[14]: file:/opt/maven/lib/plexus-utils-3.1.0.jar
constituent[15]: file:/opt/maven/lib/wagon-http-3.1.0-shaded.jar
constituent[16]: file:/opt/maven/lib/maven-repository-metadata-3.5.4.jar
constituent[17]: file:/opt/maven/lib/maven-builder-support-3.5.4.jar
constituent[18]: file:/opt/maven/lib/maven-model-3.5.4.jar
constituent[19]: file:/opt/maven/lib/maven-resolver-spi-1.1.1.jar
constituent[20]: file:/opt/maven/lib/maven-embedder-3.5.4.jar
constituent[21]: file:/opt/maven/lib/maven-shared-utils-3.2.1.jar
constituent[22]: file:/opt/maven/lib/aopalliance-1.0.jar
constituent[23]: file:/opt/maven/lib/maven-core-3.5.4.jar
constituent[24]: file:/opt/maven/lib/maven-settings-builder-3.5.4.jar
constituent[25]: file:/opt/maven/lib/maven-plugin-api-3.5.4.jar
constituent[26]: file:/opt/maven/lib/plexus-sec-dispatcher-1.4.jar
constituent[27]: file:/opt/maven/lib/maven-resolver-impl-1.1.1.jar
constituent[28]: file:/opt/maven/lib/maven-artifact-3.5.4.jar
constituent[29]: file:/opt/maven/lib/plexus-cipher-1.7.jar
constituent[30]: file:/opt/maven/lib/wagon-file-3.1.0.jar
constituent[31]: file:/opt/maven/lib/maven-resolver-util-1.1.1.jar
constituent[32]: file:/opt/maven/lib/jcl-over-slf4j-1.7.25.jar
constituent[33]: file:/opt/maven/lib/maven-settings-3.5.4.jar
constituent[34]: file:/opt/maven/lib/maven-model-builder-3.5.4.jar
constituent[35]: file:/opt/maven/lib/slf4j-api-1.7.25.jar
constituent[36]: file:/opt/maven/lib/commons-cli-1.4.jar
constituent[37]: file:/opt/maven/lib/maven-resolver-provider-3.5.4.jar
constituent[38]: file:/opt/maven/lib/maven-resolver-api-1.1.1.jar
constituent[39]: file:/opt/maven/lib/org.eclipse.sisu.plexus-0.3.3.jar
constituent[40]: file:/opt/maven/lib/commons-io-2.5.jar
constituent[41]: file:/opt/maven/lib/jansi-1.17.1.jar
constituent[42]: file:/opt/maven/lib/maven-resolver-connector-basic-1.1.1.jar
---------------------------------------------------
Exception in thread "main" java.lang.ExceptionInInitializerError
	at org.torquebox.mojo.mavengem.RubygemsFactory.getOrCreate(RubygemsFactory.java:116)
	at org.torquebox.mojo.mavengem.MavenGemURLConnection.connect(MavenGemURLConnection.java:103)
	at org.torquebox.mojo.mavengem.MavenGemURLConnection.getInputStream(MavenGemURLConnection.java:83)
	at org.torquebox.mojo.mavengem.wagon.MavenGemWagon.fillInputData(MavenGemWagon.java:51)
	at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:126)
	at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
	at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
	at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:567)
	at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:435)
	at org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:412)
	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:453)
	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:360)
	at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75)
	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:583)
	at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:232)
	at org.eclipse.aether.internal.impl.DefaultMetadataResolver$ResolveTask.run(DefaultMetadataResolver.java:593)
	at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75)
	at org.eclipse.aether.internal.impl.DefaultMetadataResolver$1.execute(DefaultMetadataResolver.java:513)
	at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve(DefaultMetadataResolver.java:368)
	at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata(DefaultMetadataResolver.java:191)
	at org.apache.maven.repository.internal.DefaultVersionRangeResolver.getVersions(DefaultVersionRangeResolver.java:218)
	at org.apache.maven.repository.internal.DefaultVersionRangeResolver.resolveVersionRange(DefaultVersionRangeResolver.java:168)
	at org.eclipse.aether.internal.impl.DefaultDependencyCollector.cachedResolveRangeResult(DefaultDependencyCollector.java:619)
	at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:394)
	at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:365)
	at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:353)
	at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:256)
	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:282)
	at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:169)
	at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:243)
	at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:147)
	at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:246)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200)
	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:954)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
	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:566)
	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.jruby.embed.EvalFailedException: (OpenSSL::X509::StoreError) setting default path failed: No password supplied for PKCS#12 KeyStore.
	at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133)
	at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1340)
	at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1333)
	at org.sonatype.nexus.ruby.DefaultRubygemsGateway.<init>(DefaultRubygemsGateway.java:43)
	at org.torquebox.mojo.mavengem.Rubygems.<clinit>(Rubygems.java:27)
	... 53 more
Caused by: org.jruby.exceptions.RaiseException: (OpenSSL::X509::StoreError) setting default path failed: No password supplied for PKCS#12 KeyStore.
	at org.jruby.ext.openssl.X509Store.set_default_paths(org/jruby/ext/openssl/X509Store.java:165)
	at RUBY.SSLContext(uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:31)
	at RUBY.SSL(uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:22)
	at RUBY.OpenSSL(uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:21)
	at RUBY.(root)(uri:classloader:/META-INF/jruby.home/lib/ruby/shared/jopenssl19/openssl/ssl-internal.rb:20)
	at org.jruby.RubyKernel.load(org/jruby/RubyKernel.java:1087)

there was a discussion that loading OpenSSL really would not be needed in this case and there's an open unpolished experiment: #2 ... with JRuby 9.2.9.0 could maybe just force -Djruby.cli.rubygems.enable=false ?

either way a newer JRuby release might be necessary to properly run on newer Java ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions