如何在IntelliJ中指定Java类所需的依赖项?

时间:2016-07-12 01:21:07

标签: android intellij-idea gradle

使用IntelliJ工作并通过Github上传应用程序的源代码以创建项目。

由于依赖性,我最难编译java类(据我所知)。我需要的.jar文件作为我的java类的依赖项出现在.idea / libraries文件夹中作为.xml文件。当我转到View / Tool Windows / Gradle并双击Tasks / android / androidDependencies作为LOCAL依赖项时,它们也会出现。但是,在我的java类文件中,导入的.jar文件依赖项中的变量仍然无法解析。每当我尝试将.jar文件添加到我的项目库时,Gradle会要求同步项目,因此,项目库中.jar文件的目录更改为我的项目/应用程序文件,并以红色加下划线并已损坏。当我不同步项目时,会出现编译错误,这些错误会导致我的java类中从这些.jar依赖项派生的实例无法找到(它们不引用依赖项)。

以下是我的app / build.gradle文件的样子(不正常的依赖项是最后的四个:selenium-server-standalone-2.53.0.jar,jacoco-maven-plugin- 0.7.7.201606060606.jar,jbrofuzz-core-2.5.jar和java-client-4.0.0.jar)

任何人都可以帮我解决这个问题吗?我可以根据需要提供更多信息。

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"
    //noinspection GroovyAssignabilityCheck
    defaultConfig {
        applicationId "eu.wikijourney.wikijourney"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 21
        versionName '1.2.0'
    }
    //noinspection GroovyAssignabilityCheck
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    //noinspection GroovyAssignabilityCheck
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
    }
    //noinspection GroovyAssignabilityCheck
    productFlavors {
    }
//noinspection GroovyAssignabilityCheck
    lintOptions{ // https://stackoverflow.com/a/32676398/3641865
        disable 'MissingTranslation' // So gradle stops complaining about the generated app_version string
                                     // not present in all translations. This is a (not so) ugly hack.
    }
    // https://stackoverflow.com/a/29525111/3641865
    applicationVariants.all { variant ->
        variant.resValue "string", "app_version", variant.versionName
    }
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}
//noinspection GroovyAssignabilityCheck
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.loopj.android:android-async-http:1.4.9'
    compile 'org.apache.commons:commons-lang3:3.3.2'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'org.osmdroid:osmdroid-android:5.0.1@aar'
    compile 'com.github.MKergall.osmbonuspack:OSMBonusPack:v5.6'
    compile 'com.github.k3b:k3b-geoHelper:v1.1.1'
    compile files('selenium-server-standalone-2.53.0.jar')
    compile files('jbrofuzz-core-2.5.jar')
    compile files('jacoco-maven-plugin-0.7.7.201606060606.jar')
    compile files('java-client-4.0.0.jar')
    // compile 'com.github.k3b:APhotoManager:k3b-geoHelper:test-libgeo-0.4.7.160321'
}

1 个答案:

答案 0 :(得分:0)

这一行

compile fileTree(include: ['*.jar'], dir: 'libs')

表示它将编译您放置在项目的libs目录中的所有JAR文件。这意味着,您可以删除这些行。

compile files('selenium-server-standalone-2.53.0.jar')
compile files('jbrofuzz-core-2.5.jar')
compile files('jacoco-maven-plugin-0.7.7.201606060606.jar')
compile files('java-client-4.0.0.jar')

将所有JAR移动到该libs文件夹中(如果它不存在则创建它)。如果您仍然遇到错误,那么您会遗漏更多依赖项。

此外,您应尽可能尝试从Maven找到所需的库。 (使用Gradle选项卡查看要包含的所需依赖项)

并且,至少对于其中一个依赖项,您可以使用the JitPack instructions