2010-12-29 7 views
4

Javaでxjcを実行するクラスを作成しています。次のように私のコードは行く:私はこれを実行するとjava.net.MalformedURLException:プロトコルがありません

URL url = new URL("C:\\Users\\Simran\\Desktop\\books.xsd"); 
SchemaCompiler sc = XJC.createSchemaCompiler(); 
sc.parseSchema(new InputSource(url.toExternalForm())); 
S2JJAXBModel model = sc.bind(); 
JCodeModel cm = model.generateCode(null, null); 
cm.build(new FileCodeWriter(new File("C:\\Users\\Simran\\Desktop\\books.xsd"))); 

は、しかし、私は次のエラーを取得する:

Exception in thread "main" java.net.MalformedURLException: no protocol: books.xsd 
    at java.net.URL.<init>(Unknown Source) 
    at java.net.URL.<init>(Unknown Source) 
    at java.net.URL.<init>(Unknown Source) 
    at jaxbTest.Test1.main(Test1.java:22) 

誰もこれを助けてくださいことはできますか?

+0

あなたは 'sc.parseSchema(新しいInputSource(" C:\\ Users \\ Simran \\ Desktop \\ books.xsd "));を試したことがありますか? –

+0

ya私はこれを試していましたが、それは仕事をしませんでした – simran

答えて

14

ファイルパスの先頭に"file://"を追加してみてください。しかし、Bozhoが提案したように、ここにURLは必要ありません。

+0

+1は、私が答えに追加している間に 'file://'プロトコルを述べました:) – Bozho

+0

ありがとう。出来た。 – simran

+0

誰でも私にAPIコールを介してxjcを使用するためのリンクを教えていただけますか? – simran

9

これは有効なURLではありません。プロトコルとしてfile://を付加することで有効にすることができます。

しかし、URLはまったく必要ありません。 InputSourceコンストラクタにReader(およびInputStream)を渡すことができます。例:

new InputSource(new FileReader(path)) 
+0

私はいつもそれが3つありました:///のように思っていましたが、この回答をupvotingしています。また、正しい用語は追加されていませんが、prependingです。 –

+0

"prepending"に感謝します。 2つのスラッシュでも動作しますが、どちらが標準であるかわかりません。私はそれがスラッシュの数に関係なく正規化されると思います。 – Bozho

-1

私は仮想コンソールを開いている間、上記を持っていました。

解決策:ブラウザで非常に安全なオプションを選択してください。

スタート - > Java設定 - >セキュリティ - クリッキング - 非常に高い。

関連する問題