[BlueOcean] Error during maven installation "Illegal character in path at index 32: https://nodejs.org/dist/v5.8.0/${node.download.file}"

216 views
Skip to first unread message

Quentin Dufour

unread,
Jun 14, 2016, 5:11:54 PM6/14/16
to Jenkins Developers, que...@dufour.io
Hi,

I've an error durring blueocean-plugin installation (mvn clean install). Here is the stacktrace :

java.lang.IllegalArgumentException: Illegal character in path at index 32: https://nodejs.org/dist/v5.8.0/${node.download.file}
	at java.net.URI.create(URI.java:852)
	at org.apache.maven.wagon.providers.http.httpclient.client.methods.HttpGet.<init>(HttpGet.java:69)
	at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:970)
	at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:960)
	at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
	at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
	at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
	at com.googlecode.WGet.doGet(WGet.java:293)
	at com.googlecode.WGet.execute(WGet.java:223)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	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:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	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:498)
	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.net.URISyntaxException: Illegal character in path at index 32: https://nodejs.org/dist/v5.8.0/${node.download.file}
	at java.net.URI$Parser.fail(URI.java:2848)
	at java.net.URI$Parser.checkChars(URI.java:3021)
	at java.net.URI$Parser.parseHierarchical(URI.java:3105)
	at java.net.URI$Parser.parse(URI.java:3053)
	at java.net.URI.<init>(URI.java:588)
	at java.net.URI.create(URI.java:850)
	... 30 more


My configuration :

Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-i386/jre
Default locale: fr_FR, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-1-686-pae", arch: "i386", family: "unix"

Seems to be related with https://github.com/jenkinsci/js-builder
I suppose that the variable in the URL is not correctly replaced by the value but I'm not sure.

You'll find the whole logs here :
http://dufour.tk/~quentin/logs/mvnlogs.log

I would really like to help solving the problem, but I'm a little bit lost with maven package dependencies.
Thanks by advance for your help,

Quentin Dufour

Quentin Dufour

unread,
Jun 14, 2016, 5:44:51 PM6/14/16
to Jenkins Developers, que...@dufour.io
Problem was due to my (old ?) architecture : i386.
There is no entry for nodejs and linux i386.

I've solved the problem by adding the following to  ~/.m2/repository/org/jenkins-ci/plugins/plugin/2.10/plugin-2.10.pom :
     <profile>
      <id>node-classifier-linux-i386</id>
      <activation>
        <os>
          <family>Linux</family>
          <arch>i386</arch>
        </os>
      </activation>
      <properties>
        <node.download.file>node-v${node.version}-linux-x86.tar.gz</node.download.file>
        <node.download.classifier />
      </properties>
    </profile>


When I'll be sure that it solves the problem, I would be happy to propose a pull request to JenkinsCI but I'm not sure of the corresponding file in the repository.
I'm supposing its https://github.com/jenkinsci/jenkins/blob/00fc80fe29c4dd02afb6052715f3926bed6a8695/war/pom.xml

I will try to test that tomorrow.
Sorry for the useless post, I hope it will help someone :D

Michael Neale

unread,
Jun 14, 2016, 11:29:41 PM6/14/16
to Jenkins Developers, que...@dufour.io
Wow, glad you worked that out!

Yes the front end pluging picks an appropriate pre-made node binary for the platform. This has happened before with BSD (no premade binaries exist for freebsd though, as far as I know). 

I assume you are showing up as i386 as you are 32bit? 

Did that change work? 

The repo that has the configuration for what node version to download is here: https://github.com/jenkinsci/plugin-pom/blob/master/pom.xml in the 

Quentin Dufour

unread,
Jun 15, 2016, 9:40:24 AM6/15/16
to Jenkins Developers, que...@dufour.io
Yes, you're right. I've a 32 bit installation :

$ uname -a
Linux deuxfleurs.fr 4.4.0-1-686-pae #1 SMP Debian 4.4.6-1 (2016-03-17) i686 GNU/Linux


Linux distros have quite different naming conventions (amd64, i386, etc.) for their architectures. There is also a

I think the change worked because the build passed. You'll find the logs here : http://dufour.tk/~quentin/logs/mvnlogs2.log

I've also opened a Pull Request on the plugin-pom repository.

Quentin Dufour

unread,
Jun 16, 2016, 9:38:45 AM6/16/16
to Jenkins Developers, que...@dufour.io
My Pull Request has been accepted, but I've found some other pom.xml missing the same entry.
Here is the list I've found :

As I'm new here, I don't really know what to do next.

As far as I know, nodejs is only needed during compilation because it's used by blueocean and some other plugins which need gulp and its "ecosystem" to generate frontend assets.
I don't completely understand why nodejs have to be redownloaded in the above files, but I think it could cause some trouble if my modified pom.xml doesn't match the others.

@andresrc recommended that I open a PR on jenkinsci/jenkins in order that we get more input about supported architecture.

  • Should I open a PR for linux i386 on every project ?
  • Should we discuss about supported architecture for compilation before ?
  • Should I open an issue on Jira ?

Tom Fennelly

unread,
Jun 16, 2016, 4:22:22 PM6/16/16
to Jenkins Developers, que...@dufour.io
Yes, I think it would be worth doing it for Jenkins core (as suggested by @andresrc). Thanks Quentin !!
Reply all
Reply to author
Forward
0 new messages