a small explanation of the latest push

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

a small explanation of the latest push

I need to explain something for those who are building 3.07-BETA (the current head revision) from source.

I was ill for a few months but I am back at work. There was a lingering problem with dependent classes, in that sometimes an invalid class file was produced for the parent class. For the very few times I encountered this, I always discounted it as a fluke, or an intermittent error - it really is an intermittent error, as it turned out.

Now, back at work, because I am using dependent classes a lot more, due to the new RexxIO.File.forEachline mechanism that was introduced last symposium, this problem was getting really noticeable, and annoying. After first blaming the new virus checker (it might contribute, and at a previous job, switching off viruschecking made the problem go away), I had to analyse the problem, and it turned out to be in the JSR199 implementation of ecj, the Eclipse Batch Java compiler, which we include with NetRexx.

Having fallen forward to a new release of ecj, (4.7.3a) it turns out that its JSR199 implementation is different from 4.6.3, and of javac’s - it might be a detail but it does not work now.

To enable error-free compilation with NetRexx on JRE-only machines with the current 3.07 level (I am one of those people in my current job), I have fallen back to the pre-JSR199 mechanism for the new ecj level compiles. This is temporary, until the root problem is fixed. It has as a consequence, that .java source (the default is now to not write it to disk) needs to be present when compiling with ecj. So -keepasjava -replace is needed for the moment.

The choice was here between a nonpredictable annoying intermittent error and the temporary fallback to the older mechanism for ecj compiles.
My advice is to use javac for the moment, wherever possible. Until the temporary fix is reverted, it will also be faster.

The current generally available level of NetRexx, 3.06, is unaffected, but it also has the problem with ecj compiles and dependent classes. If you are experiencing any odd build problems (and, as I said the problem is truly intermitttent and nonpredictable) the advice is to use javac as java compiler.
Also, building NetRexx itself has been switched to javac.

I will let the list know when this is fixed, for the moment I am postponing the 3.07-BETA release until further notice.

best regards,


Ibm-netrexx mailing list
[hidden email]
Online Archive : http://ibm-netrexx.215625.n3.nabble.com/