首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法识别java库插件的api配置。

无法识别java库插件的api配置。
EN

Stack Overflow用户
提问于 2020-04-25 17:15:20
回答 1查看 2.1K关注 0票数 2

我对Gradle是新手,我使用的是Gradle 6.1。

我正在编写小型应用程序,以理解多项目应用程序和Gradle的Java插件的概念。

我的问题是:

在没有从SubProject-2

  • Why导入DefaultRandomGenerator类的情况下App.java运行得很好我在父项目(MultiProjectApp).

的build.grade文件中得到了错误消息“找不到方法调用api”

下面是我的应用程序代码:

父项目(MultiProjectApp)文件

settings.gradle

代码语言:javascript
复制
rootProject.name = 'MultiProjectApp'
include 'SubProject-1'
include 'SubProject-2'

build.gradle

代码语言:javascript
复制
allprojects {
    apply plugin: 'java'

    group 'org.example'
    version '1.0-SNAPSHOT'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
    }

}
project(':SubProject-1') {

    dependencies {
        implementation project(':SubProject-2')
    }
}

project(':SubProject-2') {
    apply plugin: 'java-library'

    dependencies {
        api 'org.apache.commons:commons-math3:3.2'
        implementation 'org.apache.logging.log4j:log4j-core:2.5'
        testImplementation "junit:junit:4.12"
    }
}

子项目-2个文件

build.gradle

代码语言:javascript
复制
Empty file

RandomGenerator.java

代码语言:javascript
复制
package org.examples;

public interface RandomGenerator {

    String name();
    int generate();
}

DefaultRandomGenerator.java

代码语言:javascript
复制
package org.examples;

import org.apache.commons.math3.random.RandomDataGenerator;

public class DefaultRandomGenerator implements RandomGenerator {

    public String name() {
        return "Main Random Number Generator";
    }

    public int generate() {
        final RandomDataGenerator randomDataGenerator = new RandomDataGenerator();
        return randomDataGenerator.nextInt(5, 10);
    }
}

次级项目-1个文件

build.gradle

代码语言:javascript
复制
Empty file

App.java

代码语言:javascript
复制
package org.examples;

import org.apache.commons.math3.random.RandomDataGenerator;

public class App {

    public static void main(String[] args) {
        RandomGenerator aRandomGenerator = new DefaultRandomGenerator();
        System.out.println("The 1st random number is :" + aRandomGenerator.generate());
        System.out.println("The 2nd random number is :" + generateMy());
    }

    public static int generateMy() {
        final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator();
        return aRandomDataGenerator.nextInt(5, 10);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 03:01:53

App.java如何在没有从子项目2导入DefaultRandomGenerator类的情况下运行得很好

这是因为它们都在同一个包(org.examples)中。

注意,如果使用Java9中引入的新模块系统,这将无法工作。因为这两个项目被认为是“拆分”的,因此您将需要各种黑客才能使其工作。

为什么在父项目(MultiProjectApp)的build.grade文件中得到错误消息“找不到方法调用api的候选”。

这是IDE问题,而不是分级问题。如果你跑了,它应该还能用。

在Vscode中运行它的示例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61429559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档