Sadece bir dosyayı programıma okumak istiyorum. Dosya, "../f.fsh" adresindeki çalışma dizininin üstünde bir dizin bulunur. Yani şu kod Ben IDE içinde çalıştırdığınızda düzgün çalışırNeden GetourceAsStream(), IDE'de çalışır, JAR değil?
String name="../f.fsh";
InputStream is = getClass().getResourceAsStream(name);
InputStreamReader isreader=new InputStreamReader(is);//CRASHES HERE WITH NULL POINTER EXCEPTION
BufferedReader br = new BufferedReader(isreader);
ama f.fsh bunun içinde sıkıştırılmış ve çalıştırın bir JAR dosyası oluştururken InputStreamReader oluştururken, bu çöküyor InputStream çünkü boş.
Girdi akışları ve JAR dosyaları hakkındaki sorulara bir sürü yanıt okudum ve bundan ne çıkarsam göreceli yollar kullanmam gerektiğiydi, ancak bunu zaten yapıyorum. Anladığım kadarıyla getResourceAsStream(), projenin kökü ile ilgili dosyaları bulabilir, istediğim budur. Neden JAR'da çalışmıyor? Neyin yanlış gidiyor, nasıl düzeltebilirim?
Sınıf yolu ile ilgisi var mı? Sadece çalışmakta olan kavanozun dışındaki dosyaları dahil etmeyi düşündüm.
Ben de denedim, ama bir çizgi koyarak zaman yine başarısız olması: How to get a path to a resource in a Java JAR file andfound bir JAR içeriğini necesarily bir dosya olarak erişilebilir olmayabilir: Ben baktım
InputStream is = getClass().getResourceAsStream("\\"+name);
. Bu yüzden dosyayı jar ile ilgili olarak kopyalamayı denedim (kavanozdan bir dizin) ve bu hala başarısız oluyor. Her durumda, dosyalarımı kavanozda bırakmak ve orada okuyabilmek istiyorum. Neyin yanlış gittiğini bilmiyorum.
Teşekkürler, bu mantıklı. Dosya konumlarımı ve kaynaklarımın yerini değiştirdim ve bu hatayı kavanozda geçebildi. Eclipse'in benim lehimde bir böcek olduğunu asla düşünmezdim. Çok teşekkür ederim! – AAB