2014-05-03 2 views
0

Я пытаюсь построить TightVNC Java Viewer из источника (я скачал официальную версию отсюда: http://www.tightvnc.com/download.php).Как решить ошибку «пакет не найден» при построении с использованием градиента?

При создании с использованием предоставленного файла gradle я получаю эту ошибку: package com.jcraft.jsch не существует.

Файл 'src/libs/jsch-0.1.50.jar' существует в проекте. Я не могу понять, почему он не компилируется, поскольку он включен в файл build.gradle. Я использую команду построения градации. Что мне не хватает?

Это предусмотрено построить Gradle файл, как это первоначально предусматривалось в Gradle пакете:

apply plugin:'java' 
apply plugin: 'eclipse' 

sourceCompatibility = 1.6 
targetCompatibility = 1.6 
version = '2.7.2' 

project.ext.baseName = 'tightvnc-jviewer' 
def buildNo = processBuildNo(version) 

defaultTasks 'clean', 'dist' 

configurations { 
    viewerSwingCompile { extendsFrom compile } 
    viewerSwingRuntime { extendsFrom viewerSwingCompile, runtime } 
} 

sourceSets { 
    viewerSwing { 
     java { 
      srcDir 'src/viewer_swing/java' 
     } 
     resources { 
      srcDir 'src/viewer_swing/resources' 
     } 
    } 
    main { 
     java.srcDirs += viewerSwing.java.srcDirs 
     resources.srcDirs += viewerSwing.resources.srcDirs 
    } 
} 

repositories { 
    flatDir { 
     dirs 'src/libs/' 
    } 
} 

dependencies { 
    viewerSwingCompile group: 'com.jcraft', name: 'jsch', version: '0.1.+', ext: 'jar' 
    viewerSwingRuntime configurations.viewerSwingCompile 
    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

def manifestAttributes = ['Main-Class': 'com.glavsoft.viewer.Viewer', 
     'Implementation-Version': "${project.version} (${buildNo})", 
     'Implementation-Title': 'TightVNC Viewer', 
     'Implementation-Vendor': 'GlavSoft LLC.'] 

jar { 
    baseName = project.baseName 
    version = null 
    manifest { 
     attributes manifestAttributes 
    } 
    def runtimeDeps = configurations.viewerSwingRuntime.collect { 
     it.isDirectory() ? it : zipTree(it) 
    } 
    from(runtimeDeps) { 
     exclude 'META-INF/**' 
    } 
} 

task noSshJar (type: Jar, dependsOn: classes) { 
    baseName = 'nossh/' + project.baseName 
    version = null 
    manifest { 
     attributes manifestAttributes 
    } 
    from sourceSets.main.output 
} 

artifacts { 
    archives file('src/web/viewer-applet-example.html') 
    archives noSshJar 
} 

uploadArchives { 
    repositories { 
     add(new org.apache.ivy.plugins.resolver.FileSystemResolver()) { 
      addArtifactPattern("$projectDir/dist/${project.baseName}-${project.version}/[artifact].[ext]") 
     } 
    } 
    uploadDescriptor = false 
} 

task dist(dependsOn: uploadArchives) 

def processBuildNo(currentVersion) { 
    final String VERSION = 'version' 
    final String BUILD = 'build' 

    def lastVersion = currentVersion 
    def lastBuild = 0 
    def buildNoFile = new File('.build_no') 
    if (! buildNoFile.exists()) { 
     buildNoFile.createNewFile() 
     buildNoFile << "${VERSION}=${lastVersion}\n${BUILD}=${lastBuild}" 
    } 
    def versions = [:] 
    buildNoFile.eachLine { 
     def splitted = it.split('=') 
     if (splitted.size() == 2) { 
      def (key, value) = splitted 
      switch(key.trim()) { 
       case VERSION: 
        lastVersion = value.trim() 
        break 
       case BUILD: 
        try { 
         lastBuild = value != null ? value.trim() as Integer : 0 
        } catch (NumberFormatException) {} 
        versions[lastVersion] = lastBuild 
        break 
      } 
     } 
    } 
    lastVersion = versions[currentVersion] 
    if (null == lastVersion) { 
     versions[currentVersion] = 0 
    } 
    ++versions[currentVersion] 
    def outString = '' 
    versions.each { v, b -> 
     outString += "${VERSION}=${v}\n${BUILD}=${b}\n\n" 
    } 
    buildNoFile.write(outString) 
    versions[currentVersion] 
} 
+0

Лучше спросите авторов/сопровождающих этой сборки. –

+1

Одна вещь, которую вы можете попробовать, - использовать фиксированную версию, а не «0.1 +». Также обязательно используйте правильную версию Gradle для сборки. Многие проекты обеспечивают это, отправляя команду «gradlew» вместе с исходным кодом. –

+0

Я пробовал оба, не повезло. Я получаю ту же ошибку. Я свяжусь с авторами, но я хотел бы, чтобы это работало к концу выходных, если это возможно. – user1431676

ответ

1

После большого количества проб и ошибок, я добавил:

compile fileTree(dir: 'src/libs', include: '*.jar') 

под зависимостями секции и это сработало!

+0

Это работает btw, должен использовать gradle 1.x (я использовал gradle 1.8). gradle 2.x потерпит неудачу для java-просмотра TightVNC. И я добавил следующее в конец файла 'dependencies { compile fileTree (dir: 'src/libs ', включают:' * .jar ') } ' –

 Смежные вопросы

  • Нет связанных вопросов^_^