2010-03-31 24 views
6

İşte benim yapısı:okuma xml dosyası

  • com/firmam/ValueReader.class
  • com/firmam/kaynaklar/values.xml
  • okuyabileceğim

Eclipse projemde dosya, ancak bir .jar dosyasına verdiğimde, bu değerleri asla.

ValueReader.class.getResource() ve ValueReader.class.getResourceAsStream() kullanmayı denedim, ancak çalışmaz.

Burada sorun nedir? Değerlerime bir File nesnesini nasıl alabilirim. (Bu .jar girince artık bir dosya olduğundan)

B.

+0

http://stackoverflow.com/questions/2504272/shipping-java-code-with-data-baked-into-the-jar – Kris

cevap

8

Bir File nesne alamayan, ancak path olduğunu getResourceAsStream(path);, üzerinden bir akışı olarak almak mümkün olmalıdır Sınıfınıza numaralı yolunu tamamlayın.

örn.

/com/mycompany/resources/values.xml 
Ardından kullanarak aynı sınıf yolunda, istediğini almak kavanoz çıkarabilir
+0

'in olası kopyası var Ben denedim ve çalışmadı. Yaklaşımınız doğruydu. getResourceAsStream (yol) kullandım, ancak yol = com/mycompany/resources/values.xml yerine path = resources/values.xml kullandım ve çalışıyor. Yine de teşekkürler! –

+3

işe yaramaz çünkü sınıf yolunun kökü anlamına gelen en büyük çizgiyi koymadı. Onsuz yol görecelidir. – Bozho

+0

Ah doğru. Teşekkürler. Artık bunu asla unutmayacağım! –

-1

:

ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new 
FileInputStream(zipfile.getCanonicalFile()))); 
0

Bu çalışacaktır ...

Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml") 
2

Yapamazsın Bir jar dosyasında olduğundan dosya için bir File olsun. Ama sen bir giriş akışı alabilirsiniz:

InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml"); 

getResourceAsStream ve getResource sonra argüman eklemek, bir dosya yoluna sınıfın paketi dönüştürün. Bu, /com/mycompany/resources/values.xml yolunda dosya için bir akış verecektir.