2011-01-21 21 views
7
public class ABC { 
    public ABC() { 
     File file = new File("xyz.xml"); 

yılında istisna buldum ama kavanozumu çalıştırdığınızda aşağıdaki gibi değil: o zamandosya kavanoz

java -jar filename.jar arguments.... 

o gösteriyor hatası:

Bunu nasıl

java.lang.IllegalArgumentException: InputStream cannot be null 
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:120) 
at com.ensarm.niidle.web.proxy.ABC.<init>(ABC.java:47) 
düzeltebilirim ?

cevap

10

JAR'larda dosya içeriğini okumanız gerekiyorsa, File sınıfını doğrudan kullanamazsınız. ClassLoader kullanma yüklemek için:

// for example read the SeleniumConfiguration.xml in the default package

InputStream input = SeleniumConfiguration.class.getResourceAsStream("/SeleniumConfiguration.xml"); 
+1

Evet, doğru. Bir "Dosya" açamazsınız, çünkü bir işletim sistemi veya ağ üzerinde olduğunuzu varsayar. Kavanozun içine girmeyecek. Güzel cevap @ qrtt1. Onu nasıl tarif edeceğimi biliyorsun. :) –

+0

Teşekkür ederiz qrtt1 – swarup7m

4

NullPointerException dosyası bulunamadığını açık bir göstergesidir.

InputStream input=ABC.class.getResourceAsStream("/Element.xml");

XML dosyanız nerede? ABC.class olarak aynı pakette (jar dosyasının içindeki dizin) yerleştirirseniz, ön çizgi olmadan Element.xml olmalıdır.

0

Xml dosyanızı jar dosyasının köküne koydunuz mu? Eğer "/Element.xml" gibi yolu kullanın, kavanoz dosya yapısı gibi olmalıdır:

kavanoz dosya

  • com
  • META-INF
  • Element.xml
+0

Ve eğer kavanozu oluşturmak için otomatik bir sistem kullanıyorsanız (elle çalışan kavanoza göre), Linux'ta en azından, hangi dosyaların içerildiğini görmek için kavanozda daha az çalışabilirsiniz. kavanozdan dosyaları ayıklamak için jar -xvf. Dosya listesini görmek için – James

+0

'jar -tf' – Thilo

1

Normal olarak, InputStream'i önerildiği gibi kullanabilirsiniz, ancak harici uygulama vb. Kullanarak şifresini çözme gibi dosya üzerinde daha fazla java işlemi yapmak istediğinizde, bu akışı bir dosyaya yazmak için FileOutputStream'i kullanabilir ve sonra da t doğru bir dosya yolu yolu. Basit bir şekilde, bu dosyayı dosya sisteminize ayırabilirsiniz.

İlgili konular