1

smooks xml-javaを変換したいので、からソースファイルをロードする必要があります mobeeadmin.war/WEB-INF/sample.xml

Smooks smooks = new Smooks("/WEB-INF/sample.xml");

次の例外がスローされます。

    java.io.IOException: Failed to access data stream for resource [/WEB-INF/sample.xml]. Tried (in order):
    10:10:14,113 ERROR [stderr] (http-localhost-127.0.0.1-8080-2)   File System: E:\WEB-INF\sample.xml
    10:10:14,114 ERROR [stderr] (http-localhost-127.0.0.1-8080-2)   File System: E:\jboss-as-7.1.1.Final\bin\WEB-INF\sample.xml
    10:10:14,117 ERROR [stderr] (http-localhost-127.0.0.1-8080-2)   Classpath: /WEB-INF/sample.xml
    10:10:14,125 ERROR [stderr] (http-localhost-127.0.0.1-8080-2)

By default it looks in File System: E:\jboss-as-7.1.1.Final\bin\WEB-INF\sample.xml .I want load from E:\jboss-as-7.1.1.Final\standalone\deployments\myproject.war\WEB-INF\sample.xml.
4

1 に答える 1

0
  1. Smooksが文字列として受け取るのはファイル名です。相対的なものを使用する場合、Javaアプリケーションの開始位置を基準にして解釈されます。しかしもちろん、絶対的なものを取ることもできます。だからE:/data/sample.xmlうまくいくはずです。
  2. /WEB-INF/sample.xmlをクラスパスに含めることはできません。これは、WEB-INFがパッケージ名になるためです。ただし、ダッシュを含めることはできません。実際、これはWebアプリケーションのリソースファイルであり、ストリームを取得してロードすることができますServletContext.getResourceAsStream(java.lang.String path)。JBoss7はサーブレット3.0に準拠しているため、HttpServletRequestからServletContextを取得できます。ただし、一部の最新のフレームワークではどちらも提供されません。
  3. クラスパスからファイルを取得したい場合は、ファイルをWEB-INF / classesに移動し、クラスローダーを介してロードできます。ただし、Javaは適切なものを使用するとかなりうるさいです。最も信頼できるのはContextClassloaderです(現在はルートパッケージに含まれています)。

         Thread.currentThread().getContextClassLoader().getResourceAsStream("sample.xml");
    
于 2013-03-26T17:02:21.183 に答える