Java Kaynakları Nedir?
Java kaynakları, Java uygulamaları ve kitaplıklarıyla paketlenen veri dosyalarıdır. Bu kaynaklar, Class.getResource(String name)
çalışma zamanında yüklenir (java.net.URL
veya Class.getResourceAsStream(String name)
döndürerek java.io.InputStream
döndürür).
getResourceAsStream()
yöntemi, normalde bir kaynağın kullanılabilir olması beklendiğinde kullanılır. Çünkü bir kaynak, kullanılabilir olmaması durumunda bir IOException
gönderir. getResource()
yöntemi, kaynak mevcut değilse null değerini döndürür. Bu nedenle, isteğe bağlı kaynakları test etmek faydalı olur.
Kaynak Adları ve Yolları
J2ObjC, uygulamanın ana paketine ([NSBundle mainBundle]
) bakarak kaynakları bulur. Bunun için kaynağın göreli veya mutlak yolunu kullanır:
Göreli Yollar
Kaynak yollarının belirtilmesi için tercih edilen yöntem, göreli yolların kullanılmasıdır. Göreli yollar, eğik çizgiyle ("/") başlamaz. Göreli yolu olan bir kaynak okunurken sınıfın paket adı değiştirilir ve paket adındaki noktalar (".") öne eğik çizgilerle ("/") değiştirilir, ardından Class.getResource(String name)
veya Class.getResourceAsStream(String name)
yöntem çağrısında belirtilen göreli yol paket yoluna eklenir.
Örneğin, bir uygulamanın foo.bar.Mumble
sınıfı varsa bu paketteki sınıflara göre tüm kaynakların temel yolu /foo/bar
olur. Mumble.class.getResource("oops/error.jpg")
çağrıldığında, paketin yoluna oops/error.jpg
eklenir. Böylece tam kaynak yolu /foo/bar/oops/error.jpg
olur.
Mutlak Yollar
Mutlak yol kullanılarak da kaynak adına öne eğik çizgiyle ("/") başlanarak kaynağa da erişilebilir. Paket adları dikkate alınmaz. Bu nedenle J2ObjC, uygulamanın ana paketindeki mutlak yolları, uygulamanın Java kaynaklarındaki Class.getResource(String name)
veya Class.getResourceAsStream(String name)
referanslarında tam olarak belirtildiği şekilde kullanarak bulur. Yukarıdaki örnekte Mumble.class.getResource("/oops/error.jpg")
, foo.bar
paket adı yok sayıldığından /oops/error.jpg
tam kaynak yoluna sahiptir.
iOS Uygulamasına Kaynak Ekleme
Xcode'da bir iOS uygulamasına kaynak dosyalar eklemek için derleme hedefinin Derleme Aşamaları sekmesini açın. Ardından:
- + simgesini tıklayın (Genel sekmesinin altında) ve Yeni Dosyaları Kopyala Aşaması'nı seçin.
- Hedef olarak "Kaynaklar"ı seçin (Java Kaynakları'nı değil).
- Kaynaklar için dizini belirtin.
- + simgesini seçin ve dosyaları listesine ekleyin.
Göreli veya mutlak kaynak yollarının kullanılmasından bağımsız olarak, her kaynak dizininde bir Xcode derlemesinde ayrı bir Dosyaları Kopyalama derleme aşaması gerekir.
Örnek
JreEmulation projesi, kitaplığın birim testlerini çalıştıran "JRE JUnit Tests" uygulamasına sahiptir. Kaynaklar tarafından kullanılan her göreli yol için bir tane olmak üzere birkaç Dosya Kopyalama aşamasını görmek için söz konusu hedefin Derleme Aşamalarını seçin. Burada ClassTest.java, aynı kaynağı önce mutlak bir yol, ardından göreli bir yol kullanarak yükler. Testin kaynağı, bu Dosyaları Kopyalama oluşturma aşaması kullanılarak dahil edilir: