System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line
Added by Martin Honnen almost 3 years ago
I have just received my Saxon license but while SaxonCS 11.0 works well from the command line (with that license or my old Saxon-EE license) SaxonCS 11.1 refuses to start and throws a System.Reflection.TargetInvocationException
PS C:\Users\Martin Honnen\OneDrive\Documents\xslt> & 'C:\Program Files\Saxonica\SaxonCS-11.1\SaxonCS.exe' query -t -qs:"current-dateTime()"
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The path is empty. (Parameter 'path')
at System.IO.Path.GetFullPath(String path)
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Org.XmlResolver.XmlResolverConfiguration..ctor(List`1 propertyFiles, List`1 catalogFiles)
at Saxon.Callbacks.CatalogResourceResolver..ctor()
at Saxon.Hej.Configuration.init()
at Saxon.Hej.Configuration..ctor()
at Saxon.Eej.config.ProfessionalConfiguration..ctor()
at Saxon.Eej.config.EnterpriseConfiguration..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean wrapExceptions, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& hasNoDefaultCtor)
at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type)
at Saxon.Hej.Configuration.newConfiguration()
Unhandled exception. System.Exception: Cannot instantiate a Configuration
---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The path is empty. (Parameter 'path')
at System.IO.Path.GetFullPath(String path)
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Org.XmlResolver.XmlResolverConfiguration..ctor(List`1 propertyFiles, List`1 catalogFiles)
at Saxon.Callbacks.CatalogResourceResolver..ctor()
at Saxon.Hej.Configuration.init()
at Saxon.Hej.Configuration..ctor()
at Saxon.Eej.config.ProfessionalConfiguration..ctor()
at Saxon.Eej.config.EnterpriseConfiguration..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean wrapExceptions, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& hasNoDefaultCtor)
at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type)
at Saxon.Hej.Configuration.newConfiguration()
--- End of inner exception stack trace ---
at Saxon.Hej.Configuration.newConfiguration()
at Saxon.Hej.Query.doQuery(String[] args, String command)
at Saxon.Hej.Query.main(String[] args)
at Saxon.Cmd.Command.Main(String[] args)
Same for
PS C:\Users\Martin Honnen\OneDrive\Documents\xslt> & 'C:\Program Files\Saxonica\SaxonCS-11.1\SaxonCS.exe' transform -t -xsl:.\processorTest3.xml -s:.\processorTest3.xml
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The path is empty. (Parameter 'path')
at System.IO.Path.GetFullPath(String path)
...
Am I doing anything wrong, i.e. has anything changed between the command line call and 11.0 and 11.1? Or just a Windows issue that testing didn't catch?
Replies (5)
Please register to reply
RE: System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line - Added by Michael Kay almost 3 years ago
It's clearly related to the introduction of the XML resolver (Org.XmlResolver
) but beyond that I can't tell without getting onto a Windows machine. Diagnosing things that happen with the built executable when they work in the development environment is always tough, especially when OS-specific, and we only run a subset of tests on the built executables.
It's probably related to https://saxonica.plan.io/issues/5269 - I found a few issues there with resolving relative file names on the command line, and of course filename handling is always a bit different on Windows.
RE: System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line - Added by Martin Honnen almost 3 years ago
I also tried now under Ubuntu Linux 20.04 (admittedly only in the Window Linux subsystem) but I get a similar stack trace there:
mh@liberty-main-hp:~$ /opt/SaxonCS-11.1/SaxonCS query -t -qs:'current-dateTime()'
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The path is empty. (Parameter 'path')
at System.IO.Path.GetFullPath(String path)
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Org.XmlResolver.XmlResolverConfiguration..ctor(List`1 propertyFiles, List`1 catalogFiles)
at Saxon.Callbacks.CatalogResourceResolver..ctor()
at Saxon.Hej.Configuration.init()
at Saxon.Hej.Configuration..ctor()
at Saxon.Eej.config.ProfessionalConfiguration..ctor()
at Saxon.Eej.config.EnterpriseConfiguration..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean wrapExceptions, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& hasNoDefaultCtor)
at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type)
at Saxon.Hej.Configuration.newConfiguration()
Unhandled exception. System.Exception: Cannot instantiate a Configuration
---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The path is empty. (Parameter 'path')
at System.IO.Path.GetFullPath(String path)
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Org.XmlResolver.XmlResolverConfiguration..ctor(List`1 propertyFiles, List`1 catalogFiles)
at Saxon.Callbacks.CatalogResourceResolver..ctor()
at Saxon.Hej.Configuration.init()
at Saxon.Hej.Configuration..ctor()
at Saxon.Eej.config.ProfessionalConfiguration..ctor()
at Saxon.Eej.config.EnterpriseConfiguration..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean wrapExceptions, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& hasNoDefaultCtor)
at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type)
at Saxon.Hej.Configuration.newConfiguration()
--- End of inner exception stack trace ---
at Saxon.Hej.Configuration.newConfiguration()
at Saxon.Hej.Query.doQuery(String[] args, String command)
at Saxon.Hej.Query.main(String[] args)
at Saxon.Cmd.Command.Main(String[] args)
Aborted
Is that a license issue? https://www.saxonica.com/html/documentation11/about/license/checklicense.html says "SaxonCS will fail and exit if no license file is found." without detailing which error/exit message you should get
For it's worth, I installed the license under both Windows and Linux in the SaxonCS 11.1 installation directory (i.e. in my case C:\Program Files\Saxonica\SaxonCS-11.1
on Windows and /opt/SaxonCS-11.1
for Ubuntu) and set up an environment variable (e.g. export SAXON_LICENSE_DIR=/opt/SaxonCS-11.1
for Ubuntu which printenv
then shows as set).
So far I haven't tried to run my own .NET code with SaxonCS 11.1 under Ubuntu but under Windows they work fine so in the case of my own .NET code the license is found.
RE: System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line - Added by Martin Honnen almost 3 years ago
I have now tried to run the SaxonCS 11.1 command line tool on MacOS and there it works (but it is rather ridiculous and insane to have to allow all those libraries with explicit permissions step by step).
While investigating the zip files to be downloaded for Windows and Linux compared to the one for MacOS, I notice that the one for MacOS, like the previous 11.0.1 for Windows, contains lots of separate dll files, meanwhile for SaxonCS 11.1.1 and Linux there is a huge SaxonCS file in the zip with only a few dlls.
On Windows, I find only clrcompression.dll, clrjit.dll,coreclr.dll, mscordaccore.dll, SaxonCS.exe, SaxonCS.pdb, and SaxonCS.xml.
On the Mac, there are dozens of dll files.
Is the zip for Windows correctly built?
Is anyone able to run SaxonCS 11.1 for Windows or Linux off that installation from the downloadable zip?
RE: System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line - Added by Martin Honnen almost 3 years ago
Will this be looked at once you have resolved other bugs? Or it is better to raise this as a bug issue to ensure it will not be overlooked?
RE: System.Reflection.TargetInvocationException when trying to run SaxonCS 11.1 on Windows from command line - Added by Michael Kay almost 3 years ago
We're aware of it, but it is much harder to track issue status for forum posts than for bug issues, so it's certainly less likely to be overlooked if you move it. Thanks.
Please register to reply