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

使用Scala的poi-ooxml-schemas-3.9jar的Sbt编译错误

  •  1
  • YoBre  · 技术社区  · 11 年前

    我正试图用SBT编译我的项目,但我遇到了这个错误,无法找出原因:

    YoBre$ sbt compile
    [info] Loading project definition from /opt/virtualenvs/venv1/scala/name/project
    [info] Set current project to name (in build file:/opt/virtualenvs/venv1/scala/name/)
    [info] Compiling 4 Scala sources and 5 Java sources to /opt/virtualenvs/venv1/scala/name/target/scala-2.10/classes...
    [error] error while loading CTP, class file '/opt/virtualenvs/venv1/scala/name/lib_managed/jars/org.apache.poi/poi-ooxml-schemas/poi-ooxml-schemas-3.9.jar(org/openxmlformats/schemas/wordprocessingml/x2006/main/CTP.class)' is broken
    [error] (class java.lang.NullPointerException/null)
    [error] error while loading CTTbl, class file '/opt/virtualenvs/venv1/scala/name/lib_managed/jars/org.apache.poi/poi-ooxml-schemas/poi-ooxml-schemas-3.9.jar(org/openxmlformats/schemas/wordprocessingml/x2006/main/CTTbl.class)' is broken
    [error] (class java.lang.NullPointerException/null)
    [error] error while loading CTTc, class file '/opt/virtualenvs/venv1/scala/name/lib_managed/jars/org.apache.poi/poi-ooxml-schemas/poi-ooxml-schemas-3.9.jar(org/openxmlformats/schemas/wordprocessingml/x2006/main/CTTc.class)' is broken
    [error] (class java.lang.NullPointerException/null)
    [error] three errors found
    [error] (compile:compile) Compilation failed
    [error] Total time: 6 s, completed 18-set-2013 12.31.36
    

    这个项目包含Java和Scala代码。当我将一个与拆分以前用java编写的单词文档有关的功能翻译成Scala时,出现了这个错误。事实上,这个错误与一个jar文件库org.apache.poi有关。

    我试图记录下来,但没有发现类似的案例。

    知道吗?

    谢谢

    3 回复  |  直到 11 年前
        1
  •  3
  •   George    11 年前

    您是否尝试将jar文件添加为外部依赖项?在您的建筑.sbt中:

    libraryDependencies += "org.apache.poi" % "poi-ooxml-schemas" % "3.9"
    
        2
  •  1
  •   YoBre    11 年前

    我已经将POI的版本更新为3.10-beta2。 然而,没有依赖性 "org.apache.poi"% "-OOXML schemas"% "1.0"

    添加后一切正常

    谢谢大家的回答!

      lazy val poiVersion = "3.10-beta2"
      lazy val libPoi ="org.apache.poi" % "poi" % poiVersion
      lazy val libPoiScratchpad ="org.apache.poi" % "poi-scratchpad" % poiVersion
      lazy val libPoiOOXML ="org.apache.poi" % "poi-ooxml" % poiVersion
      lazy val libPoiOOXMLSchema= "org.apache.poi" % "ooxml-schemas" % "1.0"
      lazy val libPoiComponents = Seq(libPoi, libPoiScratchpad, libPoiOOXML, libPoiOOXMLSchema)
    
        3
  •  0
  •   Community Egal    7 年前

    我发现了一个 similar question ,我怀疑你可能也有同样的问题。Scala无法加载带有缺失注释的类,因此可能存在一个缺失的依赖项,否则Java是可选的。

    通过执行检查依赖项列表 show compile:dependency-classpath 在sbt中,并确保您具有在 Apache POI Project site .