Hi Rory,

I debugged Apache Ant today and I found out why this is happening. I will also 
contact the jdk-core mailing list because this is the most horrible thing that 
can happen: The source of all Java build systems (Apache Ant) breaks. Gradle 
uses Ant internally but also Maven projects use Ant in many cases. So basically 
with this bug you cannot build most Java projects out there.

The issue is the following: The commit of Multi-Release-Jar files broke 
resource handling in Apache Ant. In short: If you call 
ClassLoader.getResources() / or getResource() you get back an URL from where 
you can load the Resource - this is all fine and still works. But, with the 
Multi-Release JAR files patch this now has an URL fragment appended to the URL: 
'#release' (see http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/f9913ea0f95c)

In Java 7, Java 8,... and Java 9pre-b108, 
ClassLoader.getResource()/getResources() returned stuff like: 

"jar:file:/C:/Program%20Files/Java/apache-ant-1.9.6/lib/ant.jar!/org/apache/tools/ant/antlib.xml"

Now in Java 9b108 the following is returned:

"jar:file:/C:/Program%20Files/Java/apache-ant-1.9.6/lib/ant.jar!/org/apache/tools/ant/antlib.xml#release"

And here Ant breaks (and I assume many other projects like Maven, too). Ant 
checks for the file extension of the string (because it may load definitions 
from both XML and properties files). So it does endsWith(".xml") and of course 
this now returns false. The effect is that Ant tries to load its own task 
definitions as a java properties file instead of XML. Of course this fails, 
because the data behind this URL is XML. The effect is that Ant cannot 
bootstrap as everything to build is missing.

One might say: Ant's code is broken (I agree, it is not nice because it relies 
on the string representation of the resource URL), but it is impossible to fix, 
because Ant is bundled on most developer computers and those will suddenly 
break with Java 9!

I'd suggest to please ASAP revert the Multi-Release JAR file patch and provide 
a new preview build as soon as possible. I think there is more work needed to 
fix this. If this does not revert to the original state, it will be impossible 
to build and test Lucene, Elasticsearch,.... (and almost every Java project 
pout there, because it breaks on this). So short: We cannot test anymore and 
its likely that we cannot support Java 9 anymore because the build system used 
by most Java projects behind the scenes does not bootstrap itsself anymore.

Uwe


-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: [email protected]


> -----Original Message-----
> From: Rory O'Donnell [mailto:[email protected]]
> Sent: Friday, March 04, 2016 7:41 PM
> To: [email protected]
> Cc: [email protected]; 'Dalibor Topic' <[email protected]>;
> 'Balchandra Vaidya' <[email protected]>; 'Muneer Kolarkunnu'
> <[email protected]>
> Subject: Re: [JENKINS-EA] Lucene-Solr-master-Linux (32bit/jdk-9-ea+108) -
> Build # 16098 - Still Failing!
> 
> Let me know the incident number, thanks Uwe!
> 
> Rgds,Rory
> 
> On 04/03/2016 15:20, Uwe Schindler wrote:
> > Oh, oh,
> >
> > Build 108 of JDK 9 broke the internal XML parser completely (looks like that
> commit: http://hg.openjdk.java.net/jdk9/jdk9/jaxp/rev/95c223e6eaf0). I
> reverted to build 108, because we cannot even build Lucene with it (Ant fails
> parsing the build.xml file)...
> >
> > I will dig into it and open issue for Rory!
> >
> > Uwe
> >
> > -----
> > Uwe Schindler
> > H.-H.-Meier-Allee 63, D-28213 Bremen
> > http://www.thetaphi.de
> > eMail: [email protected]
> >
> >
> >> -----Original Message-----
> >> From: Policeman Jenkins Server [mailto:[email protected]]
> >> Sent: Friday, March 04, 2016 4:09 PM
> >> To: [email protected]; [email protected];
> >> [email protected]
> >> Subject: [JENKINS-EA] Lucene-Solr-master-Linux (32bit/jdk-9-ea+108) -
> Build
> >> # 16098 - Still Failing!
> >> Importance: Low
> >>
> >> Build: http://jenkins.thetaphi.de/job/Lucene-Solr-master-Linux/16098/
> >> Java: 32bit/jdk-9-ea+108 -server -XX:+UseG1GC
> >>
> >> No tests ran.
> >>
> >> Build Log:
> >> [...truncated 17 lines...]
> >> BUILD FAILED
> >> /home/jenkins/workspace/Lucene-Solr-master-Linux/build.xml:21: The
> >> following error occurred while executing this line:
> >> /home/jenkins/workspace/Lucene-Solr-master-Linux/lucene/common-
> >> build.xml:56: not doesn't support the nested "matches" element.
> >>
> >> Total time: 0 seconds
> >> Build step 'Invoke Ant' marked build as failure
> >> Archiving artifacts
> >> [WARNINGS] Skipping publisher since build result is FAILURE
> >> Recording test results
> >> ERROR: Step ‘Publish JUnit test result report’ failed: No test report files
> were
> >> found. Configuration error?
> >> Email was triggered for: Failure - Any
> >> Sending email for trigger: Failure - Any
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> 
> --
> Rgds,Rory O'Donnell
> Quality Engineering Manager
> Oracle EMEA , Dublin, Ireland
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to