質問

Java 7:

まで働くマーチルビルドで頑張っているWSIMPORTタスクを持っています。
task wsimport {
    ext.destDir = file("${buildDir}/generated/java")
    ext.wsdlSrc = file("src/main/resources/schema/example/my.wsdl")
    ext.bindingSrc = file("src/main/resources/schema/example/bindings.xsd")
    outputs.dir destDir
    doLast {
        ant {
            destDir.mkdirs()
            taskdef(name: 'wsimport',
                classname: 'com.sun.tools.ws.ant.WsImport',
                classpath: configurations.jaxws.asPath)
            wsimport(keep: true,
                package: 'net.example.my',
                xnocompile: true,
                quiet: true,
                sourcedestdir: destDir,
                wsdl: wsdlSrc,
                binding: bindingSrc,
                encoding: "UTF-8"
            )
        }
    }
}
.

JDK 8に切り替えるとき(ビルド1.8.0-B129)次のエラーが発生します。

java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: ... schema_reference:
Failed to read schema document 'xjc.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.
.

問題の検索私は次の投稿を見つけました(Java 7驚くべきことにも問題を説明する): HTTPS://github.com/stianh/gradle-jaxb-plugin/issues/20 しかし、環境/引数をwsimport / xjcに渡すことができません。

このアクセスや制限を無効にする方法

役に立ちましたか?

解決

私が見つけた唯一の作業解決策は、反射を使用してシステムプロパティを設定することでした:

task wsimport {
  System.setProperty('javax.xml.accessExternalSchema', 'file')
  ...
}
.

extまたはsystemPropertyを使用した他のすべてのソリューションは私のために機能しませんでした。 私はGradle 1.11がインストールされています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top