Как запустить несколько классов java через Gradle? - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь запустить основной класс, а также другой java класс (сервер) одновременно, используя gradle, но по какой-то причине я продолжаю получать эту ошибку, когда пытаюсь запустить задачу сервера.

Error: Could not find or load main class task ':Server'
Caused by: java.lang.ClassNotFoundException: task ':Server'

Вот мой gradle.build

plugins {
    id 'application'
    id 'java'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}
javafx {
    version = "11.0.2"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}
version '1.0-SNAPSHOT'
repositories {
    mavenCentral()
}
sourceSets.main.java.srcDirs = ['src']
sourceSets {
    main {
        resources {
            srcDirs = ["src"]
            includes = ["**/*.css", "images/*png", "files/*.csv", "**/*.csv"]
        }
    }
}
dependencies {
    compile group: 'commons-validator', name: 'commons-validator', version: '1.6'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
}
apply plugin: 'java'
apply plugin: 'application'
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
task(Server, dependsOn: 'classes', type: JavaExec) {
    description = "Run the Server class"
    classpath = sourceSets.main.runtimeClasspath
    main = Server
}
defaultTasks 'Server'
mainClassName = 'Main'

1 Ответ

0 голосов
/ 26 марта 2020

main = Server означает, что точкой входа для вашей задачи Server является класс Java с именем Server в пакете по умолчанию с соответствующим значением Server.class на диске.

Gradle будет иметь создал такой файл с вашей настройкой, только если для компиляции был src/Server.java файл.

Это действительно то, что вы имели в виду?

В противном случае значение main должно быть примерно таким: your.company.package.MainClass.

Кроме того, строки

apply plugin: 'java'
apply plugin: 'application'

не нужны, поскольку эти два плагина уже установлены в блоке plugins в верхней части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...