我对Gradle是新手,我使用的是Gradle 6.1。
我正在编写小型应用程序,以理解多项目应用程序和Gradle的Java插件的概念。
我的问题是:
在没有从SubProject-2
的build.grade文件中得到了错误消息“找不到方法调用api”
下面是我的应用程序代码:
父项目(MultiProjectApp)文件
settings.gradle
rootProject.name = 'MultiProjectApp'
include 'SubProject-1'
include 'SubProject-2'build.gradle
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
Empty fileRandomGenerator.java
package org.examples;
public interface RandomGenerator {
String name();
int generate();
}DefaultRandomGenerator.java
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
Empty fileApp.java
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);
}
}发布于 2020-04-26 03:01:53
App.java如何在没有从子项目2导入DefaultRandomGenerator类的情况下运行得很好
这是因为它们都在同一个包(org.examples)中。
注意,如果使用Java9中引入的新模块系统,这将无法工作。因为这两个项目被认为是“拆分”的,因此您将需要各种黑客才能使其工作。
为什么在父项目(MultiProjectApp)的build.grade文件中得到错误消息“找不到方法调用api的候选”。
这是IDE问题,而不是分级问题。如果你跑了,它应该还能用。
在Vscode中运行它的示例

https://stackoverflow.com/questions/61429559
复制相似问题