Thanks for reporting it, but there's not much I can do.

I try to distinguish between APIs - application programming interfaces for ordinary applications, and SPIs - system programming interfaces used for low-level integration of tools such as debuggers and profilers. Generally, I make low-level interfaces public so that people can write this kind of tool, but I don't bend over backwards to retain compatibility from one release to the next: these interfaces often expose internal data structures that have to change as the product evolves. So it's not a cause of great surprise that a tool like a profiler should need tweaking to make it work with a new Saxon release.

I'm a little surprised by your stack trace because it's reporting a failure to find a non-Saxon class (I would have expected, perhaps, an exception saying that an EditiX class doesn't correctly implement a Saxon interface). I'm happy to help the EditiX developers fix it if they choose to, but I'm not going to lose sleep over it. (I'm quite happy, after all, if EditiX users switch to a product produced by a Saxonica partner, i.e. oXygen or Stylus Studio).

Michael Kay

On 09/02/2012 15:11, David Rudel wrote:
Not sure if you care much about this, but EditiX is a pretty decent IDE for the price. When I purchased a license for Saxon PE and replaced the SaxonHE.jar file with the SaxonPE.jar file, I found that their profiler tool is no longer working.

Note that the version of SaxonHE that "ships" with EditiX is likely from a much earlier release.

Of course, this is not really a problem with Saxon; it is a problem with EditiX, but I wanted to bring it to your attention in case there was a simple fix.

When I contacted EditiX, they indicated that there was evidently some change made between the old SaxonHE.jar and the current SaxonPE.jar removed functionality that their profiler uses.

The XSLT in question runs without error on the source when the profiler tool is not being used.

The following error trace is given when their profiler is used.

Exception in thread "AWT-EventQueue-0" java.lang.
NoClassDefFoundError: com/japisoft/editix/xslt/debug/SaxonTraceListener
    at com.japisoft.editix.xslt.debug.XSLTManager.updateDebugListenerForFactory(Unknown Source)
    at com.japisoft.editix.action.xsl.XSLTAction.applyCommonTransformation(Unknown Source)
    at com.japisoft.editix.action.xsl.XSLTAction.finalTransform(Unknown Source)
    at com.japisoft.editix.action.xsl.XSLTAction.applyTransformation(Unknown Source)
    at com.japisoft.editix.action.xsl.XSLProfilerAction.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$ Source)
    at java.awt.EventQueue$ Source)
    at Method)
    at$1.doIntersectionPrivilege(Unknown Source)
    at$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$ Source)
    at java.awt.EventQueue$ Source)
    at Method)
    at$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at Source)



"A false conclusion, once arrived at and widely accepted is not dislodged easily, and the less it is understood, the more tenaciously it is held." - Cantor's Law of Preservation of Ignorance.

Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.

saxon-help mailing list archived at