jaxb外部バインディングのカスタマイズの使用エラー
質問
wsdlcツール(weblogic 10.3.1)を使用して、wsdlからクラスを生成します。 次の外部jaxbバインディングカスタマイズファイルがあります。
<jaxb:bindings
xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
schemaLocation="web/WEB-INF/....xsd"
version="2.1">
<jaxb:bindings node="/xs:schema">
<jaxb:globalBindings>
<xjc:superClass name="my.MySuperClass" />
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>
コンパイルに関するエラーメッセージ:シンボルmy.MySuperClassが見つかりません。
javacから:<!> quot; package my does not exist <!> quot;。クラスパス= <pathelement location=
などを介して含めるすべて、およびEclipseプラグインからの60行。問題は、wsdlcが開始するjavacコマンドにあります。このコマンドのクラスパスは正しいですが(ハードコードされたパスなど)、それでも<!> quot; package ... does not exist <!> quot;。
antからのwsdlcの使用方法は次のとおりです。
<path id="class.path">
<pathelement path="${java.class.path}" />
<pathelement location="... hard coded path on disk to a jar" />
</path>
<target name="generate-ws-from-wsdl">
<wsdlc failOnError="true"
srcWsdl="${basedir}/web/WEB-INF/ps.wsdl"
destImplDir="${basedir}/src"
destJwsDir="${basedir}/web/WEB-INF/lib"
srcPortName="PsPort"
type="JAXWS">
<binding file="jaxb-bindings.xml" />
<classpath refid="class.path" />
</wsdlc>
</target>
解決 3
クラスを適切にjarしませんでした。WinZipを使用していくつかのクラスをjarにすばやく追加できると考えましたが、WinZipの「パス」はjavaのパッケージ名とは異なりました。少し時間がかかりましたが、クラスパスについて何かを学びました。
他のヒント
my.SuperClass
は既に存在している必要があり、wsdlc
は生成しません。生成されたコードをコンパイルすることになると(これはここで失敗していると思われます)、javacがそのクラスパスで<=>を見つけることができないためです。
build.xml
の抜粋を提供してください。wsdlc
の使用方法を示します。
WebLogic固有に加えて wsdlc属性、また定義できます 次の標準javac 属性; Antのドキュメントを参照してください それぞれに関する追加情報について 属性:
bootclasspath
bootClasspathRef
classpath
- [...]
次のものも使用できます 標準のAnt子要素 wsdlc Antタスク:
<FileSet>
<SourcePath>
<Classpath>
my.SuperClass
を含めるクラスパスを指定しましたか?