代码之家  ›  专栏  ›  技术社区  ›  Thufir

SaxonParserTest缺少SaxonXQDataSource?

  •  0
  • Thufir  · 技术社区  · 6 年前

    希望运行 simplest 使用Saxon的可能示例,特别是, Saxon-HE :

    thufir@dur:~/NetBeansProjects/helloWorldSaxon$ 
    thufir@dur:~/NetBeansProjects/helloWorldSaxon$ gradle clean run
    
    > Task :compileJava FAILED
    /home/thufir/NetBeansProjects/helloWorldSaxon/src/main/java/helloWorldSaxon/App.java:6: error: package com.saxonica.xqj does not exist
    import com.saxonica.xqj.SaxonXQDataSource;
                           ^
    1 error
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':compileJava'.
    > Compilation failed; see the compiler error output for details.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 0s
    2 actionable tasks: 2 executed
    thufir@dur:~/NetBeansProjects/helloWorldSaxon$ 
    

    我不认为这是正确的进口声明,但我也不确定什么是正确的。仔细看一下这个样本,就会发现它正在使用 saxonica 实际上已经对导入进行了注释:

    //import net.sf.saxon.xqj.SaxonXQDataSource;
    

    如果要重新迭代,将希望留在 撒克逊河 . 但是如何呢?

    build 文件:

    compile (group = "net.sf.saxon"            , name = "Saxon-HE"    , version = "9.9.0-2")
    

    坚持 撒克逊河 这是正确的导入?

    此数据源与哪个数据源一起提供?

    thufir@dur:~/saxon$ 
    thufir@dur:~/saxon$ jar tf Saxon-HE.jar | grep data
    net/sf/saxon/data/
    net/sf/saxon/data/analyze-string.xsd
    net/sf/saxon/data/casevariants.xml
    net/sf/saxon/data/categories.xml
    net/sf/saxon/data/chameleon.xsl
    net/sf/saxon/data/json.xsd
    net/sf/saxon/data/normalizationData.xml
    net/sf/saxon/data/override.xsl
    net/sf/saxon/data/unicodeBlocks.xml
    net/sf/saxon/data/xml-to-json-indent.xsl
    net/sf/saxon/data/xml-to-json-pkg.xsl
    net/sf/saxon/data/xml-to-json.xsl
    net/sf/saxon/data/xpath-functions.scm
    net/sf/saxon/data/xpath-functions.xsd
    net/sf/saxon/resource/MetadataResource$1.class
    net/sf/saxon/resource/MetadataResource.class
    thufir@dur:~/saxon$ 
    

    我是否需要更多的编译依赖项?如果是,哪一个?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Michael Kay    6 年前

    班级 SaxonXQDataSource 在包装中 com.saxonica.xqj . 如果您使用的是saxon-he,那么您需要有JAR文件 saxon9-xqj.jar 在类路径上。

    Saxon的XQJ库与其他Saxon库不同的原因在于许可不同。XQJ接口是由Oracle发布的,Oracle声称实现受Oracle许可条件的约束(有些人认为实现发布的API需要许可证,但这对律师来说是个问题)。Oracle许可条件不符合开放源代码许可的公认标准(原因有两个:(a)它们不允许修改;(b)它们要求实现通过所有引用测试)。出于这个原因,一些重新发布Saxon的软件公司倾向于将XQJ从发行版中排除出来,为了简化这个过程,我们将XQJ类放在一个单独的JAR文件中。