Gradle Javadoc失败,并显示“错误:包...不存在". [英] Gradle Javadoc fails with "error: package ... does not exist"

查看:880
本文介绍了Gradle Javadoc失败,并显示“错误:包...不存在".的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在为我们开发的库构建Android Studio项目的Javadocs时,我们的Gradle构建脚本失败,出现以下错误:

Our Gradle build script fails when building Javadocs for Android Studio project for a library we develop, with errors like:

/MY_LOCAL_PATH/MyClass.java:5:错误:包com.google.gson不存在 导入com.google.gson.Gson;

/MY_LOCAL_PATH/MyClass.java:5: error: package com.google.gson does not exist import com.google.gson.Gson;

详细信息:

我们正在使用Gradle构建一个Android库,并希望为其构建Javadocs.

We are building an Android library with Gradle, and want to build the Javadocs for it.

Android Studio项目被配置为需要Maven dependency来用于GSON,尽管我猜想对于每个未显式提供lib文件的依赖项都会发生.

The Android Studio project is configured to require a Maven dependency for GSON, although I'm guessing it would happen with every dependency whose lib file is not provided explicitly.

我们的其中一个课程,当然是imports com.google.gson.

One of our classes, of course, imports com.google.gson.

这是我们的Gradle脚本:

Here is our Gradle script:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion '21.1.2'
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 8000
        versionName "0.8.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.2.4'
}

以及用于构建文档的任务(基于此问题):

And the task that's expected to build the docs (based on this question):

task generateJavaDocs(type:Javadoc) {
  source = 'src/main/java/com'

  ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
  classpath = files(source) + files(ext.androidJar)

  options.memberLevel = JavadocMemberLevel.PUBLIC
  include '**/*.java'
  exclude '**/BuildConfig.java'
  exclude '**/R.java'
}

完成此任务时,Gradle失败,并出现以下错误:

When reaching this task, Gradle fails with these errors:

/MY_LOCAL_PATH/MyClass.java:5:错误:包com.google.gson不存在 导入com.google.gson.Gson;

/MY_LOCAL_PATH/MyClass.java:5: error: package com.google.gson does not exist import com.google.gson.Gson;

/MY_LOCAL_PATH/MyClass.java:6:错误:包com.google.gson不存在 导入com.google.gson.JsonParseException;

/MY_LOCAL_PATH/MyClass.java:6: error: package com.google.gson does not exist import com.google.gson.JsonParseException;

/MY_LOCAL_PATH/MyClass.java:7:错误:包com.google.gson不存在 导入com.google.gson.JsonSyntaxException;

/MY_LOCAL_PATH/MyClass.java:7: error: package com.google.gson does not exist import com.google.gson.JsonSyntaxException;

/MY_LOCAL_PATH/MyClass.java:8:错误:包com.google.gson.reflect不存在 导入com.google.gson.reflect.TypeToken;

/MY_LOCAL_PATH/MyClass.java:8: error: package com.google.gson.reflect does not exist import com.google.gson.reflect.TypeToken;

有人对如何解决这个问题有想法吗?

Anyone has a thoughts on how to solve this?

谢谢!

推荐答案

我正在使用gradle构建java-library项目,而gradle javadocs任务也有类似问题:

I was working on java-library project built with gradle and I had a similar issue with gradle javadocs task:

task javadocs(type: Javadoc) {
  source = sourceSets.main.java.srcDirs
  exclude '**/R.html', '**/R.*.html', '**/index.html'
}

我的库依赖项是'org.json:json:20180130',而我的javadocs任务失败并出现错误:

My library dependency was 'org.json:json:20180130' and my javadocs task was failing with error:

error: package org.json does not exist

我通过将类路径添加到javadocs任务来解决此问题:

I fixed it by adding classpath to javadocs task like this:

task javadocs(type: Javadoc) {
  source = sourceSets.main.java.srcDirs
  classpath = sourceSets.main.runtimeClasspath
  exclude '**/R.html', '**/R.*.html', '**/index.html'
}

如果您使用的是Android插件而不是标准的Java库,则可以这样获得类路径:

If you are working with Android plugin instead of standard java library you can get the classpath like this:

classpath += project.files(android.getBootClasspath().join(File.pathSeparator))

我希望这对某人有帮助.

I hope this helps someone.

这篇关于Gradle Javadoc失败,并显示“错误:包...不存在".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆