Java Saxon和setBaseOutputURI导致;URI有一个“授权组件”;错误

Java Saxon和setBaseOutputURI导致;URI有一个“授权组件”;错误,java,unix,uri,saxon,Java,Unix,Uri,Saxon,我正在使用saxon从一个xml文件创建5个html文件。每当我运行代码窗口时,它都会平稳运行并创建所有必要的文件。但是,当我在unix中运行代码时,会导致以下错误: Failed to create output file file:/output1.html: Permission denied 在stackoverflow中搜索时,我了解到它试图写入根目录,这让我尝试了setBaseOutputURI() 我试图让saxon将html文件输出到/foo/biz/html_out中,因

我正在使用saxon从一个xml文件创建5个html文件。每当我运行代码窗口时,它都会平稳运行并创建所有必要的文件。但是,当我在unix中运行代码时,会导致以下错误:

Failed to create output file file:/output1.html:   Permission denied
在stackoverflow中搜索时,我了解到它试图写入根目录,这让我尝试了setBaseOutputURI()

我试图让saxon将html文件输出到/foo/biz/html_out中,因此我编写了以下代码:

String filePathUri = "file://foo/biz/html_out/";
xsltTransformer.setBaseOutputURI(filePathUri);
错误现在显示为

net.sf.saxon.s9api.SaxonApiException: Cannot write to URI file://foo/output1.html (URI has an authority component)
    at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:454)
我的问题是:

  • 我是否得出了必须使用setBaseOutputURI的正确结论

  • 我写错URI了吗

  • 考虑到该代码在windows中运行良好,我还应该尝试其他方法吗

  • 找到了答案


    我不得不使用“file:///foo/biz/html_out“作为URI。额外的斜杠使字符串的其余部分成为路径。

    三个斜杠是正确的。我想,一个简单的斜杠也可以。不幸的是,“文件”方案中没有真正的URI标准;甚至很难找到每个特定操作系统的规则,更不用说跨操作系统工作的规则了。