“Could not find a valid processor version implementation” with Ant junitreport task

Running some JUnit tests with Ant 1.6.5 gave this error when the <junitreport> task ran:

build.xml:160: The following error occurred while executing this line:
build.xml:367: Could not find a valid processor version implementation
from net.sf.saxon.TransformerFactoryImpl

I know of two possible solutions:

  • Upgrade to using Ant 1.7.0, or
  • Set ANT_OPTS thus:
    declare -x \\
    ANT_OPTS=-Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

Concepts, Techniques, and Models of Computer Programming

 Concepts, Techniques, and Models of Computer Programming

Concepts, Techniques, and Models of Computer Programming (ISBN 0-262-22069-5) is a big book at 900+ pages, and it covers a lot of ground. I expect it will take about two years to get through it, depending on how many of its exercises I do and how many other books I read at the same time.

It is natural to compare this book to Structure and Interpretation of Computer Programs (SICP) (ISBN 0-262-51087-1). That is the book that I still wish I’d first read in 1981 rather than in 2001. This book is not giving the same aha! moments (maybe just because I have read SICP). This book may in the end be of more practical use than the mind-expansion induced by SICP, if only because this book covers constraint programming, which I will find useful for xmlroff.

Now, the programming concepts book that I really want would be the successor to Lisp in Small Pieces (ISBN 0-521-56247-3), but AFAICT, it hasn’t been finished.