我想使用 basex 对 xml 文件执行 xquery 操作,因为它看起来比基于“查询字符串”的过滤更“透明”。
我在运行 Ubuntu 18.04 的 PC 上安装了 basex(使用 APT)。
然后我开始运行手册
嗯, sudo apt-get install basex
没有安装所有需要的东西(tagsoup.jar
、、xml-resolver.jar
和jing.jar
)。
我似乎通过安装 tagsoup 和 jing 的库找到了那些丢失的文件……至少警告信息停止了。
但是basex并不在独立模式下运行,如下:
$ basex
BaseX 8.5.1 [Standalone]
Try 'help' to get more information.
Exception in thread "main" java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
at jline.internal.InputStreamReader.<init>(InputStreamReader.java:104)
at jline.console.ConsoleReader.setInput(ConsoleReader.java:330)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:248)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:236)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:224)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.basex.util.ConsoleReader$JLineConsoleReader.<init>(ConsoleReader.java:152)
at org.basex.util.ConsoleReader.get(ConsoleReader.java:61)
at org.basex.BaseX.console(BaseX.java:180)
at org.basex.BaseX.<init>(BaseX.java:166)
有什么指导吗?
答案1
我在 18.04 上运行了这个,对于缺少的 3 个 jar 文件,出现了同样的错误。
我手动安装了以下每个.jar
文件,一切运行正常。
xml-resolver-1.2.jar
tagsoup-1.2.1.jar
jing.jar (11/11/09)
答案2
根本原因是 jline 是针对 jdk9 编译的。详细解释可在此处找到mongo db 票证。
因此使用 jdk 9 运行 basex 应该没问题。