Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mavengem failing on Java 9+ #4

Closed
kares opened this issue Feb 4, 2020 · 3 comments
Closed

mavengem failing on Java 9+ #4

kares opened this issue Feb 4, 2020 · 3 comments
Milestone

Comments

@kares
Copy link
Member

kares commented Feb 4, 2020

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 ...

@kares
Copy link
Member Author

kares commented Feb 4, 2020

right, won't boot if we simply just try disabling rubygems :

Caused by: org.jruby.exceptions.NameError: (NameError) uninitialized constant Maven::Tools::DSL::Gem
    at org.jruby.RubyModule.const_missing (org/jruby/RubyModule.java:3746)
    at RUBY.gemspec_without_gem_dependencies? (uri:classloader:/maven/tools/dsl.rb:401)
    at RUBY.gemspec (uri:classloader:/maven/tools/dsl.rb:390)
    at RUBY.eval_pom (/home/kares/workspace/oss/jruby-openssl/Mavenfile:4)
    at RUBY.nested_block (uri:classloader:/maven/tools/dsl.rb:1484)
    at RUBY.tesla (uri:classloader:/maven/tools/dsl.rb:20)
    at RUBY.eval_pom (/home/kares/workspace/oss/jruby-openssl/Mavenfile:1)
    at org.jruby.RubyKernel.eval (org/jruby/RubyKernel.java:1061)
    at RUBY.eval_pom (uri:classloader:/maven/tools/dsl.rb:67)
    at RUBY.parse (classpath:/parser.rb:80)

@deivid-rodriguez
Copy link

I think this should've been actually fixed in the last version of mavengem? At least this commit seems to intend fixing it.

I run into this error when running mvn -Pbootstrap on the jruby repo and fixed it by grepping for mavengem and replacing the old version (0.2.0) with the new one (1.0.3).

@kares
Copy link
Member Author

kares commented Feb 14, 2020

Thanks David, yes that handles the case but not for every case - haven't looked into details.
Did upgrade mavengem previous to the report as I also thought this had been resolved (lately):

  <extension>
    <groupId>org.torquebox.mojo</groupId>
    <artifactId>mavengem-wagon</artifactId>
    <version>1.0.3</version>
  </extension>
[DEBUG] Populating class realm coreExtension>org.torquebox.mojo:mavengem-wagon:1.0.3
[DEBUG]   Included /opt/local/maven-repo/org/torquebox/mojo/mavengem-wagon/1.0.3/mavengem-wagon-1.0.3.jar
[DEBUG]   Included /opt/local/maven-repo/org/torquebox/mojo/mavengem-protocol/1.0.3/mavengem-protocol-1.0.3.jar
[DEBUG]   Included /opt/local/maven-repo/org/torquebox/mojo/rubygems-tools/1.0.3/rubygems-tools-1.0.3.jar
[DEBUG]   Included /opt/local/maven-repo/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
[DEBUG]   Included /opt/local/maven-repo/org/jruby/jruby/9.1.17.0/jruby-9.1.17.0.pom
[DEBUG]   Included /opt/local/maven-repo/org/jruby/jruby/9.1.17.0/jruby-9.1.17.0.jar
[DEBUG]   Included /opt/local/maven-repo/org/jruby/jruby-core/9.1.17.0/jruby-core-9.1.17.0.jar

while doing that I also noticed (further down the build debug) :

[DEBUG] Created new class realm extension>org.torquebox.mojo:mavengem-wagon:0.2.1
[DEBUG] Importing foreign packages into class realm extension>org.torquebox.mojo:mavengem-wagon:0.2.1
[DEBUG]   Imported:  < maven.api
[DEBUG] Populating class realm extension>org.torquebox.mojo:mavengem-wagon:0.2.1
[DEBUG]   Included: org.torquebox.mojo:mavengem-wagon:jar:0.2.1
[DEBUG]   Included: org.torquebox.mojo:mavengem-protocol:jar:0.2.1
[DEBUG]   Included: org.sonatype.nexus.plugins:nexus-ruby-tools:jar:2.11.4-01
[DEBUG]   Included: org.jruby:jruby:pom:1.7.19
[DEBUG]   Included: org.jruby:jruby-core:jar:1.7.19

... which is coming from polyglot-ruby defaulting to old an old mavengem version,
fixed on master (not released atm): takari/polyglot-maven@8a8a6f8

@kares kares closed this as completed Feb 15, 2020
@headius headius added this to the pre-2.0.0 milestone Aug 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants