- - PR -
LinuxでのJarファイル内のファイルの読み込み
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-25 14:46
LinuxでJarファイル内のファイルを読み込もうとすると、うまく読み込むことができません。
同様のソースでWindowsでは動作することを確認しています。 jar内のリファイルはXML Schemaの定義ファイルで、jarを解凍した状態で実行するとlinuxでも正常に動作します。 ------------------------------------------- /home/ container.jar config.xml a.jar | --XMLValidate.class --xmlschema.xsd ------------------------------------------- 1.container.jarからURLClassLoaderでa.jarのXMLValidate.classを読み込みを実行。 2.XMLValidateでconfig.xmlの妥当性検査をxmlschema.xsdを使用して実施。 すると、xmlschema.xsdが見つからないようでparseの部分で妥当性検査に引っかかってしまいます。 ソースは以下です。 XMLValidate DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); dbfactory.setNamespaceAware(true); dbfactory.setValidating(true); dbfactory.setAttribute( "http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema"); URL url = this.getClass().getResource("/xmlschema.xsd"); dbfactory.setAttribute( "http://java.sun.com/xml/jaxp/properties/schemaSource",url); DocumentBuilder dbuilder = dbfactory.newDocumentBuilder(); dbuilder.parse("/home/config.xml"); urlには「jar:file://home/a.jar!/xmlschema.xsd」というアドレスが入っています。 またgetResourceの部分をgetResourceAsStreamに変え、setAttributeでInputStreamを渡すようにしても駄目でした。 解決方法にお心当たりのある方いらっしゃいましたらお願い致します。 |
|
投稿日時: 2007-03-26 17:06
はずしてるかもしれませんが、
Windows側とLinux側で使われているjaxpのライブラリが違うのではないですか? # 自分はそれではまったことがあるので System.out.println(dbfactory.getClass().getName()); のようにして実装の型が同じかどうか確かめてみるとよいと思います。 |
1