3

2 つの jar ファイルがあります (jar1 と jar2 としましょう)。jar2 内に 1 つの xml ファイルがあります。xmlファイルを読みたいです。私が使った

public void readXmlFile(){
InputStream resourceAsStream = MainFile.class.getResourceAsStream("/test.xml");
}

しかし今、私はjar1のクラスからこの関数を呼び出しています

File file = new File(jar2);
URL url = file.toURL();
URL[] urls = new URL[] { url };
ClassLoader cl = new URLClassLoader(urls);
Class<?> compositeClass = cl.loadClass(XmlFileReader);
Method declaredMethod = compositeClass.getDeclaredMethod("readXmlFile");
Object newInstance = compositeClass.newInstance();
declaredMethod.invoke(newInstance); 

XMLファイルがjar2ではなくjar1で検索されているため、FileNotFoundExceptionが発生しています。なぜこれが起こっているのかわかりません。誰でも私を助けることができますか?

4

1 に答える 1

2

私が見つけた唯一の解決策は、両方のjarを含むフォルダーのパスとして、jar1で System.setProperty(key, value) を使用してシステムプロパティを設定することです。次に、システム プロパティを jar2 に読み込んでから、readXml メソッドを次のように変更しました。

public void readXmlFile(){ 
JarFile jarFile = new JarFile(pathToJar2);
JarEntry entry = jarFile.getJarEntry("/test.xml");
InputStream inputStream = jarFile.getInputStream(entry);}
于 2012-10-18T07:43:19.943 に答える