SORU
21 ŞUBAT 2009, CUMARTESİ


göreli yol ile açık kaynak java

Java uygulamamı bazı dosyaları ve dizinleri almak istiyorum.

Bu program yapısı

./main.java
./package1/guiclass.java
./package1/resources/resourcesloader.java
./package1/resources/repository/modules/   -> this is the dir I need to get
./package1/resources/repository/SSL-Key/cert.jks    -> this is the file I need to get

guiclass yükler benim yük kaynak olan resourcesloader sınıfı (dizin ve dosya).

Dosya hakkında, denedim

resourcesloader.class.getClass().getResource("repository/SSL-Key/cert.jks").toString()

gerçek yol almak için, ama bu şekilde çalışmıyor...

Dir hakkında nasıl yapılacağı hakkında hiçbir fikrim yok...

Öneriniz var mı? Teşekkürler.

CEVAP
20 Ocak 2010, ÇARŞAMBA


getClass().getResource("filename.txt") yöntemi kullanma ile ilgili sorunlar vardı. Okuma üzerine Java docs talimatları, eğer kaynak değil, aynı paket olarak sınıf çalışıyorsun erişim kaynaktan, o zaman vermek zorundasın bunu göreli yol ile başlayan '/'. Önerilen strateji "" klasörü kök dizininde. kaynakları altında kaynak dosyaları koymaktır Yani, örneğin eğer bir yapısı varsa:

src/main/com/mycompany/myapp

sonra maven tarafından önerildiği gibi kaynakları bir klasör ekleyebilirsiniz:

src/main/resources

ayrıca kaynakları klasöründe alt klasörler ekleyebilirsiniz

src/main/resources/textfiles

ve dosyanız var ve bu yüzden myfile.txt denir ki

src/main/resources/textfiles/myfile.txt

Şimdi burada aptal yol sorunu devreye giriyor. ** 22 ve kaynak myfile.txt dosyası erişmek istediğiniz klasörü içinde bir sınıf olduğunu varsayalım. Bazı vermelisin ki:

"/main/resources/textfiles/myfile.txt" path

ya

"/resources/textfiles/myfile.txt"

bunların her ikisi de yanlış. Koştum sonra mvn clean compile dosya ve klasörleri kopyalanır:

myapp/target/classes 

klasör. Ama kaynakları klasörü yok, sadece kaynak klasörü içindeki klasörleri değildir. Böylece:

myapp/target/classes/textfiles/myfile.txt

myapp/target/classes/com/mycompany/myapp/*

getClass().getResource("") yöntem vermek için doğru yolu şudur:

"/textfiles/myfile.txt"

işte burada:

getClass().getResource("/textfiles/myfile.txt")

Bu artık boş döner, ancak sınıf döndürür. Bu birileri yardımcı olur umarım. "resources" klasör olarak iyi, ama sadece alt klasörleri kopyalanır ve doğrudan "resources" klasördeki dosya bana çok tuhaf. "resources" klasör de "myapp/target/classes" altında bulunan bu bana mantıklı görünüyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndroidSale

    AndroidSale

    17 NİSAN 2011
  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013