2014-10-17 18 views
10

Ben bu basit yapı komut dosyası var: Putty, Gradle ve Gradle Git eklentisini kullanırken "uyumsuz JNA yerel kütüphanesi" nasıl giderilir?

import org.ajoberstar.grgit.Grgit 

apply plugin: 'application' 
apply plugin: 'org.ajoberstar.release-opinion' 

task wrapper(type:Wrapper) { 
    gradleVersion = '2.1' 
} 

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath 'org.ajoberstar:gradle-git:0.11.+' 
    } 
} 

release { 
    grgit = Grgit.open(project.file('.')) 
} 

Bir MerhabaDünya tarzı projesini oluşturdu ve git depo başlatıldı. Uzak kaynak için bir dizin kullandığımda,

.\gradlew.bat release 

'u yalnızca düzgün çalıştırabilirim. Ben uzaktan kökenli bir ssh hedefi kullandığınızda Ama şu çıktıyı alıyorum: Ben --stacktrace ile reran ve burada bu hata için kısmi yığın izlemesi

16:39:55.355 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':prepare'. 
16:39:55.355 [INFO] [org.gradle.api.Task] Fetching changes from remote: origin 
16:39:55.387 [INFO] [org.ajoberstar.grgit.auth.TransportOpUtil] The following authentication options are allowed (though they may not be available): [ 
HARDCODED, PAGEANT, SSHAGENT, INTERACTIVE] 
16:39:55.402 [INFO] [org.ajoberstar.grgit.auth.TransportOpUtil] using interactive credentials, if needed 
16:39:55.480 [INFO] [org.ajoberstar.grgit.auth.JschAgentProxySessionFactory] ssh-agent not available 
16:39:55.511 [INFO] [org.ajoberstar.grgit.auth.JschAgentProxySessionFactory] pageant available 
16:39:55.527 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':prepare' 
16:39:55.527 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :prepare FAILED 
16:39:55.543 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :prepare (Thread[main,5,main]) completed. Took 0.219 secs. 
16:39:55.543 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[main,5,main]] finished, busy: 0.219 secs, idle: 0.0 
secs 
16:39:55.543 [ERROR] [org.gradle.BuildExceptionReporter] 
16:39:55.543 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception. 
16:39:55.543 [ERROR] [org.gradle.BuildExceptionReporter] 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong: 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':prepare'. 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] > 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] There is an incompatible JNA native library installed on this system. 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] To resolve this issue you may do one of the following: 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] - remove or uninstall the offending library 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] - set the system property jna.nosys=true 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] - set jna.boot.library.path to include the path to the version of the 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter]  jnidispatch library included with the JNA jar file you are using 
16:39:55.558 [ERROR] [org.gradle.BuildExceptionReporter] 
16:39:55.574 [ERROR] [org.gradle.BuildExceptionReporter] 
16:39:55.574 [ERROR] [org.gradle.BuildExceptionReporter] * Try: 
16:39:55.574 [ERROR] [org.gradle.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. 
16:39:55.574 [LIFECYCLE] [org.gradle.BuildResultLogger] 
16:39:55.574 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED 

(JSch ima görünüyor):

Caused by: java.lang.Error: 
    at com.sun.jna.Native.<clinit>(Native.java:142) 
    at com.jcraft.jsch.agentproxy.connector.PageantConnector$User32.<clinit>(PageantConnector.java:85) 
    at com.jcraft.jsch.agentproxy.connector.PageantConnector.<init>(PageantConnector.java:61) 
    at org.ajoberstar.grgit.auth.JschAgentProxySessionFactory$_closure2.doCall(JschAgentProxySessionFactory.groovy:122) 
    at org.ajoberstar.grgit.auth.JschAgentProxySessionFactory$_closure2.doCall(JschAgentProxySessionFactory.groovy) 
    at org.ajoberstar.grgit.auth.JschAgentProxySessionFactory$_determineConnector_closure5.doCall(JschAgentProxySessionFactory.groovy:86) 
    at org.ajoberstar.grgit.auth.JschAgentProxySessionFactory.determineConnector(JschAgentProxySessionFactory.groovy:85) 
    at org.ajoberstar.grgit.auth.JschAgentProxySessionFactory.getJSch(JschAgentProxySessionFactory.groovy:65) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:191) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:150) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:109) 
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121) 
    at org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init>(TransportGitSsh.java:306) 
    at org.eclipse.jgit.transport.TransportGitSsh.openPush(TransportGitSsh.java:152) 
    at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:154) 
    at org.eclipse.jgit.transport.Transport.push(Transport.java:1173) 
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:156) 
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:79) 
    at java_util_concurrent_Callable$call$0.call(Unknown Source) 
    at org.ajoberstar.grgit.operation.PushOp.call(PushOp.groovy:104) 
    at org.ajoberstar.grgit.operation.PushOp.call(PushOp.groovy) 
    at java_util_concurrent_Callable$call.call(Unknown Source) 
    at java_util_concurrent_Callable$call.call(Unknown Source) 
    at org.ajoberstar.grgit.util.OpSyntaxUtil.tryOp(OpSyntaxUtil.groovy:45) 
    at org.ajoberstar.grgit.Grgit.methodMissing(Grgit.groovy:190) 
    at org.ajoberstar.gradle.git.release.GrgitReleasePlugin$_addReleaseTask_closure4_closure14.doCall(GrgitReleasePlugin.groovy:134) 
    ... 56 more 

Bu çalışma hakkında nasıl bir fikir var?

Gradle 2.1, Gradle-git 0.11.0 (yapı betiğinde görebileceğiniz gibi) kullanıyorum, Java 1.7.0_71 64-bit (sistemde Java'nın diğer sürümleri var, ancak PATH Bu sürüm ve java -version çıkışları 1.7.0_71 64 bit), Putty 0.60 ve git 1.9.0 msysgit için ayarlayın. Bunun için

+0

Hata iletisindeki önerilerden hangisini denediniz? – technomage

+1

Ah evet, bu benim sorunumun bir parçası ... Hangi kütüphanenin suçlayıcı kütüphane olduğunu nasıl bilebilirim? Ve dosya kütüphanemde bulunan kütüphane nerede? Hangi Jar'ın bir JNA kitaplığına sahip olduğunu nasıl bilebilirim? İkinci öneriyi denedim: jna.nosys = true ayarı ve hiçbir şey değişmedi. Ayrıca, Gradle jna.boot.library.path öğesini, özel jnidispatch kütüphanesinin kullanılması için ayarlar, bu yüzden başka bir kavanozda başka bir dağıtım kütüphanesi varsa veya olmasın bana açık değildir. – Jason

+0

Gradle'ın neden çıkartılmış bir jnidispatch.dll ile birlikte geldiğinden emin değil. Jna.boot.library.path'ın bir denemeye değer olduğunu söyleyebilirim (jna.nosys öğesi yok sayılırsa) – user2543253

cevap

1

bazı olası nedenleri şunlardır:

  • Gradle tarafı JNA diğer yerlere "sızan" Gradle en az bir böcek, https://issues.gradle.org/browse/GRADLE-3288 bkz ancak esas RC-sürümlerinde oldu oldu I

    testi { systemProperties = System.properties }

  • ile birim test Gradle gelen geçiş sistemi özellikleri mi burada Gradle 2.4
  • bir durum vardı

Bu, ünite testine JNA sistemi özelliklerini geçerek Gradle'a götürür. Bu benim için çözüldü:

test { 
    systemProperties = System.properties 

    systemProperties['jna.boot.library.path'] = null 
}