2016-03-22 16 views
0

Mevcut bir yerel uygulamayı sarar ve gerçekleştirir bazı Java kodu var şu:Eclipse: bir eklenti bulunan bir klasör başvuran bir ortam değişkeninin atanması

  1. bir çalıştırır kullanıcıdan bazı girişi alır olarak temin yerel uygulama 1

yerel uygulama adım 2'de üretilen çıktı dosyalarını biraz daha işlemleri gerçekleştirir adımında alınan giriş parametreleri adim 2, bazı dinamik kitaplıklar gerektirir. Öyleyse, Çalıştırma Yapılandırmaları -> Ortam altında Kütüphanelere başvurmak için aşağıdaki değişkenleri ayarladım.

Şimdiye kadar hepsi çalışır. Şimdi kodumu ve mevcut yerel uygulamayı Eclipse eklentisi olarak paketledim. Ben aşağıdaki hatayı alıyorum eklenti içinde kod çalıştırmayı denediğinizde zaman: Anladığım kadarıyla

dyld: Library not loaded: libsrcml.dylib 
Referenced from: workspace/Project/src/nativeApp 
Reason: image not found 

ortam değişkenleri daha önce referans {$ project_loc} set çünkü bu konum nerede Eclipse olan olur proje saklandı. Şimdi, kodum bu projede yer almıyor, ancak bir eklentinin içinde yer alıyor, bu yüzden değişkenlerin yolu artık çalışmıyor. Soru, eklenti içindeki bir klasöre başvuran yolu nasıl ayarlayabilirim? Alternatif olarak, bir şekilde, Java değişkenimde dinamik olarak bu değişkenleri yüklemek mümkün mü? Dosya sistemindeki sabit bir konumu belirtmek için path variables

+0

Muhtemelen MANIFEST.MF eklentisinde 'Bundle-NativeCode' girdisini kullanarak bakmak gerekir. –

cevap

0

. Platform.getBundle("").getEntry("")

Bundle bundle = Platform.getBundle("your.bundle.id"); 
URL url = bundle.getEntry("yourDir/yourFile.txt"); 
File f = new File(FileLocator.resolve(url).toURI()); 

Durum 2: Platform URL Kaynağınıza:

url = new URL("platform:/plugin/your.bundle.id/yourDir/yourFile.txt"); 
File f = new File(FileLocator.resolve(url).toURI()); 

URL'sini

Durum 1 ben kullanırım, bir eklentinin bir kaynağı tanımlamak için

Bu ipucu için Vogella'a teşekkürler.

Ancak, eklentinizdeki kütüphaneler için, biraz farklıdır, çünkü System.loadLibrary("libname") lib'inizi çözebilmelidir.

Eklentinizde yerel kitaplıkları gönderir ve kullanırsanız, lütfen eklentinizi sıkıştırılmış bir jar dosyası olarak değil, bir dizin olarak paketleyin. Yani eklentinin MANIFEST.MF düzenlemek ve sizin Eclipse-BundleShape: dir

Eclipse-BundleShape: dir 

Ardından, eklenti bir klasör olarak paketlenmiş olacak ayarlayın ve daha sonra etkileşimde bulunma Yerli kütüphaneler yapmak sizin sorumluluğunuzdadır. Genellikle bu, yerel kitaplıkların birbiriyle nasıl bağlantılı olduğuna ve Java ile yerel çerçevenizin arama yollarını nasıl ayarlayacağına bağlıdır.

Basit çözümüm,, tüm yerel kitaplıkları, "yürütme dizinini kullanarak bu yolu alabilmem için, Java yürütme dizini olan Eclipse yürütülebilir dosyasının kök klasörüne yerleştirmektir.dir" ortam değişkeni aşağıdaki gibi: bütün yerlileri aynı klasörde olduğunda

System.getProperty("user.dir"); 

Sonra onlar sorunsuz birbirlerini başvurabilir

Lütfen da bu kaynakları kontrol edin:.

+0

Sağladığınız kaynaklara bakarak, kütüphaneyi 'System.loadLibrary ("libname") 'inin referans gösterecek şekilde paketlemeyi başardım. Ancak, yerel uygulama hala bu hata iletisini aldığımdan bulamıyor görünüyor gibi görünüyor: dyld: Kitaplık yüklü değil: libsrcml.dylib Nedeni: resim bulunamadı. Eclipse executable_'nin kök klasörü ile ne demek istediğini açıklayabilir ve oradan libs'lere nasıl başvurulur? –

+0

Eclipse dosyasının kök klasörü eclipse.exe'yi içeren dizindir. Geliştirme zamanında, Eclipse IDE'nizi içeren klasördür. Ancak bir Eclipse RCP ürünü oluşturuyor ve gönderiyorsanız, "product" .exe dosyanızı içeren klasördür. Bunun açık olup olmadığını söyleyin, böylece cevabı güncelleyebilirim. – psuzzi

+0

Açık, ancak eklentim standart bir Eclipse kurulumunda kullanıldığında da çalışan bir çözüm bulmak istiyorum. –

İlgili konular