【问题标题】:Error in java class path in ant build Oxygen Dita-Otant build Oxygen Dita-Ot 中的 java 类路径错误
【发布时间】:2017-04-15 16:58:57
【问题描述】:

您好,即使包含 jdk 路径位置,我也会收到此错误。它的显示

Expected to find it in C:\Program Files\Java\jre1.8.0_111\lib\tools.jar

cmd 代码生成了这个

C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x>ant -f integrator.xml
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre1.8.0_111\lib\tools.jar
Buildfile: C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x\integrator.xml

strict:

integrate:

BUILD FAILED
C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x\integrator.xml:66: The following error occurred while executing this line:
C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x\integrator.xml:44: javax.xml.transform.TransformerFactoryConfigurationError: Provider net.sf.saxon.TransformerFactoryImpl not found
        at javax.xml.transform.FactoryFinder.newInstance(Unknown Source)
        at javax.xml.transform.FactoryFinder.find(Unknown Source)
        at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
        at org.dita.dost.platform.Integrator.writePlugins(Integrator.java:514)
        at org.dita.dost.platform.Integrator.integrate(Integrator.java:207)
        at org.dita.dost.platform.Integrator.execute(Integrator.java:200)
        at org.dita.dost.platform.IntegratorTask.execute(IntegratorTask.java:40)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
        at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.ClassNotFoundException: net/sf/saxon/TransformerFactoryImpl
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at javax.xml.transform.FactoryFinder.getProviderClass(Unknown Source)
        ... 38 more

Total time: 0 seconds

类路径或集成器 xml 文件有问题吗?我已经按照氧气 dita-ot 网站和书中给出的步骤进行操作。

我认为问题出在这部分

 C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x\integrator.xml:66: The following error occurred while executing this line:
C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x\integrator.xml:44: javax.xml.transform.TransformerFactoryConfigurationError: Provider net.sf.saxon.TransformerFactoryImpl not found

我的集成商行号(44,66)这么说,我无法理解。

44  <integrate ditadir="${dita.dir}" strict="${strict}"/>

65<target name="strict" description="Run integration in strict mode">
  66  <antcall target="integrate">
    67  <param name="strict" value="true"/>
    68</antcall>
  69</target>

【问题讨论】:

    标签: java xml ant build dita


    【解决方案1】:

    tools.jar 只存在于 JDK 包中,而不存在于 JRE 包中。您需要下载JDK8包并安装,然后将系统属性(JAVA_HOME和PATH)链接到新的JDK安装目录路径。

    JDK8 download

    毕竟,重新运行你的命令。

    【讨论】:

    • 谢谢,不过我已经下载了最新的jdk版本。 JAVA_HOME 到底是什么意思?我知道的路径。
    • JAVA_HOME 表示JDK安装目录,在我的电脑上是“D:\Program Files\Java\jdk1.8.0_60”,加上“%JAVA_HOME%\bin;”到 PATH 值的头部。然后再试一次:)
    • 谢谢,我已经拿到了,我的文件正在成功构建
    【解决方案2】:

    您正尝试从命令行运行 integrator.xml 并且错误消息显示 Saxon 不在类路径中。

    通常oXygen用户通过管理员权限调用oXygen,选择“文档”-“转换”-“配置转换方案”-“运行DITA OT Integrator”。

    Executing:
    "c:\program files\oxygen xml editor 18.1\jre/bin/java" -Xmx256m -classpath "C:\Program Files\Oxygen XML Editor 18.1\tools\ant/lib/ant-launcher.jar" "-Dant.home=C:\Program Files\Oxygen XML Editor 18.1\tools\ant" org.apache.tools.ant.launch.Launcher -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\ant-apache-resolver-1.9.4.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\ant-launcher.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\ant.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\commons-codec-1.9.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\commons-io-2.4.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\dost-configuration.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\dost-patches.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\dost.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\guava-19.0.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\jsearch.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\xml-apis-1.4.01.jar" -lib "C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\xml-resolver-1.2.jar" -f "C:\Program Files\Oxygen XML Editor 18.1\frameworks/dita/DITA-OT2.x/integrator.xml" "-Dstrict=true" "-Dwebhelp.trial.license=no"
    
    Buildfile: C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\integrator.xml
    
    strict:
    
    integrate:
          [jar] Building jar: C:\Program Files\Oxygen XML Editor 18.1\frameworks\dita\DITA-OT2.x\lib\dost-configuration.jar
    
    BUILD SUCCESSFUL
    Total time: 9 seconds
    
    The process finished with exit code: 0
    

    这个方法可以解决你的问题。

    【讨论】:

    • 好的,先生,我会试试这个然后告诉你
    【解决方案3】:

    您的代码显示您使用的是 DITA OT 的 2.x 版本。但是您使用的是旧 OT 版本的积分器命令。

    您可以使用 Oxygen 来运行积分器,但如果您想从命令行运行它,请执行以下操作:

    1. 以管理员身份打开命令窗口:按开始,输入cmd,当出现cmd.exe时,右键单击并选择“以管理员身份运行”。
    2. 导航到 Oxygen 2.x DITA OT:

      C:\Program Files\Oxygen XML Editor 17\frameworks\dita\DITA-OT2.x

    3. 输入这个命令:

      bin\dita -安装

    如果它返回提示没有错误,你应该很好。

    顺便说一句,tools.jar 错误通常不用担心。

    【讨论】:

    • 不客气,你可以点击箭头,这样我就可以得到我的布朗尼积分了吗?
    猜你喜欢
    • 1970-01-01
    • 2020-03-10
    • 2021-07-10
    • 2014-04-16
    • 2011-07-30
    • 2017-12-04
    • 2016-01-19
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多