2 つの jar (main.jar と schema.jar) があり、main.jar 内のクラスの schema.jar からスキーマ ファイル (src/main/resources/sample.xsd にあります) を読み取る必要があります。main.jar のクラスパスには、maven 依存関係として schema.jar があります。this.getClass().getClassLoader().getResourceAsStream を使用すると、sample.xsd ファイルを見つけることができますが、java.io.File が必要です。java.io.File パラメータを提供する最もメモリ効率の良い方法は何ですか?
main.jar:
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("/resources/sample.xsd");
Sample sample = new Sample();
//set sample data here
Marshaller marshaller = JAXBContext.newInstance(Sample.getClass()).createMarshaller();
final SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
final Schema s = schemaFactory.newSchema(new File("/resources/sample.xsd"));
marshaller.setSchema(s);
marshaller.marshal(Sample, XML);