2016-03-29 16 views
0

sqlite4java kullanan bir proje var ve tutulma çalışıyorum.Eclipse için java.library.path oluşturmak için Gradle nasıl elde edilir

Sorunum, eclipse proje dosyalarını oluşturmak için bir araya geldiğimde, proje sınıf yolunun, sınıfta olduğunu tahmin ettiğimden dolayı projemi oluşturmamayı geciktiren java.library.path yerine classpath yerine sqlite4java'nın yerel kitaplıklarını içermesidir. yerel kütüphaneler iyi oluşturulmuş zip dosyaları değildir. Ayrıca, yerel kütüphaneleri sınıf yolundan el ile kaldırdığımda, sınamaları veya uygulamayı çalıştırdığımda, sqlite4java yerel kitaplıklarını yüklemedikleri için hata veriyorlar.

Kodumun uyumlu olmasını ve eclipse içinde çalışmasını sağlamak için, eclipse için java.library.path öğesini sqlite4java için ayarlamaya nasıl yetişirim?

cevap

0

bu iş parçacığı üzerinde çözüm Bulunan:

build.gradle:

def getSqlLite4JavaNativeLibraryPath() { 
    return configurations.runtime.resolve().findResult { entry -> 
     String absolutPath = entry.getAbsolutePath(); 

     if(absolutPath.contains("sqlite4java-win32-x64")){ 
      // return the directory that contains the native library 
      return entry.getParent() 
     } 
    } 
} 

eclipse.classpath.file.whenMerged { classpath -> 
    //remove the all native libraries as direct dependencies 
    classpath.entries.removeAll { 
     entry -> entry.kind == 'lib' && (entry.path.endsWith('.dll') 
      || entry.path.endsWith('.so') 
      || entry.path.endsWith('.dylib')) 
    } 
    //but add them as native libraries 
    def sqlite4java = classpath.entries.findResult { entry -> 
     if (entry.kind == 'lib' && entry.path.contains('sqlite4java')) { 
      return entry 
     } 
    } 
    sqlite4java.setNativeLibraryLocation(getSqlLite4JavaNativeLibraryPath()) 
} 

https://discuss.gradle.org/t/is-it-possible-to-set-eclipses-java-library-path-from-build-gradle/6511/6

benim gradle yapı dosyası ve gradle eclipse yeniden çalıştırmayı için aşağıdaki kodu ekleme sorunu çözüldü oluşturulan .classpath dosyası artık yerel kitaplık dizininin niteliklerini içerir.

.classpath:

<classpathentry sourcepath="C:/Users/user1/.gradle/caches/modules-2/files-2.1/com.almworks.sqlite4java/sqlite4java/1.0.392/2efe18f7bea6fa9536802dd4ea54d948117216c6/sqlite4java-1.0.392-sources.jar" kind="lib" path="C:/Users/user1/.gradle/caches/modules-2/files-2.1/com.almworks.sqlite4java/sqlite4java/1.0.392/d6234e08ff4e1607ff5321da2579571f05ff778d/sqlite4java-1.0.392.jar" exported="true"> 
    <attributes> 
     <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="C:\Users\user1\.gradle\caches\modules-2\files-2.1\com.almworks.sqlite4java\sqlite4java-win32-x64\1.0.392\d20dc00abecc7e0bde38c68eee68f2e70c26df95"/> 
    </attributes> 
</classpathentry> 

Ben de gradle birim testleri sqlite4java yerel kütüphaneleri yüklemek için başarısız edildi sorun koştu, bu yüzden de böylece benim gradle test hedefine aşağıdaki eklemek için gerekli sınıfa gelen sınamalar sqlite4java yerel kitaplıklarını yükleyebilir.

test { 
    systemProperty "sqlite4java.library.path", getSqlLite4JavaNativeLibraryPath() 
} 
İlgili konular