2

我在文件夹中:

/cygdrive/d/ragsxq我保留了一些简单的 X-Query stmts 以通过 Saxon X-Query 引擎执行...(Saxon 9.4 HE)

以下声明:

$ java -classpath /cygdrive/d/saxon/saxon9he.jar net.sf.saxon.Query -q:ragsXQuery.xq

给出:

java.lang.NoClassDefFoundError: net/sf/saxon/Query Caused by: 
java.lang.ClassNotFoundException: net.sf.saxon.Query at
java.net.URLClassLoader$1.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(Unknown Source) at 
java.lang.ClassLoader.loadClass(Unknown Source) at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class:
net.sf.saxon.Query. Program will exit. Exception in thread "main"

但下面的语句工作正常:

$ java -classpath ../saxon/saxon9he.jar net.sf.saxon.Query -q:ragsXQuery.xq

?!?!

与类加载器有关..?? 权限..?? 赛格温?嗯……


非常感谢您指出这种 Cygwin 行为!

但奇怪的是,java.lang.NoClassDefFoundError当我尝试在 Mac OS Lion 上通过我的 Eclipse (Indigo) 运行 Xquery 时,我遇到了这个(与上面完全相同)......通过XQDT 插件,我必须在其中配置 XQuery通过提供 saxon9he.jar 的完整路径和主类即引擎,net.sf.saxon.Query

请注意,Windows-XP 上的类似设置工作正常。

这一次,我想这可能是一些 Classpath 问题或 Mac OS 的 Java 处理方式不同?

4

1 回答 1

4

我想我以前遇到过这种情况。这可能是 Cygwin 的细微差别。试试看嘛

$ java -classpath `cygpath -m /cygdrive/d/saxon/saxon9he.jar` net.sf.saxon.Query -q:ragsXQuery.xq

以下是关于原因的可能解释:

http://cygwin.com/ml/cygwin/2008-01/msg00083.html

下面是我的 Cygwin 的可执行 JAR 文件的输出。我使用 Windows Vista 32 位(我知道,这很糟糕)。

adarshr$ java -jar /cygdrive/d/adarshr/data/cf.jar
Error: Unable to access jarfile /cygdrive/d/adarshr/data/cf.jar
adarshr$
adarshr$ java -jar `cygpath -m /cygdrive/d/adarshr/data/cf.jar`
Usage: java  -jar  cf.jar  SEARCH  [DIRECTORY]  [OPTIONS]...
Try -h or --help for more information

如您所见,第二个命令有效并打印了帮助(如预期的那样)。

于 2012-06-05T11:12:59.133 回答