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
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
Java Açık Kaynak Profilciler...
vermeyeceksiniz Java kaynak kod içine ...
Java arabirim yöntemleri kamuya açık b...
Nasıl iki mutlak yol (veya URL) Java g...
Nasıl gizlerim ben .Eclipse Açık Kayna...