Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类二进制目录的梯度依赖性_Java_Intellij Idea_Gradle - Fatal编程技术网

Java 类二进制目录的梯度依赖性

Java 类二进制目录的梯度依赖性,java,intellij-idea,gradle,Java,Intellij Idea,Gradle,在包含二进制(.class)文件的目录上,是否有方法为某个源集声明编译和运行时依赖关系?我的问题是,我在其中一个构建任务中生成了它们,但在从IDE运行/调试时,我需要访问它们 当前,我的sourceset文件的一部分如下所示: sourceSets { library { java { srcDir 'src/library' srcDir 'src/asm' srcDir 'src/parsing'

在包含二进制(
.class
)文件的目录上,是否有方法为某个
源集
声明编译和运行时依赖关系?我的问题是,我在其中一个构建任务中生成了它们,但在从IDE运行/调试时,我需要访问它们

当前,我的
sourceset
文件的一部分如下所示:

sourceSets {
    library {
        java {
            srcDir 'src/library'
            srcDir 'src/asm'
            srcDir 'src/parsing'

            runtimeClasspath += library.resources
        }
        resources {
            srcDir "${buildDir}/dyvilbin"

            include '**/*.dyo', '**/*.class'
        }
    }

    compiler {
        java {
            srcDir 'src/compiler'
            compileClasspath += library.compileClasspath
            runtimeClasspath += library.runtimeClasspath
        }
        resources {
            srcDir 'src/resources'

            include '**/*.properties'
        }
    }

    repl {
        java {
            srcDir 'src/repl'
            compileClasspath += compiler.compileClasspath
            runtimeClasspath += compiler.runtimeClasspath
        }
    }
}

不幸的是,使用
gradle idea
,我的IntelliJ项目编译并启动,但在运行期间,
build/dyvilbin
src/resources
目录中的类和文件无法解析(
ClassNotFoundException
)。

我自己设法找到了一个解决方案,利用依赖关系:

dependencies {
    // ...

    runtime files("$buildDir/dyvilbin") {
        builtBy 'someCompilerTask'
    }
}
为了在Jar发行版中包含输出文件,我将此代码段添加到
Jar
任务中:

task buildREPL(type: Jar, dependsOn: 'someOtherTask') {
    from sourceSets.repl.output

    from("$buildDir/dyvilbin") {
        include '**/*.dyo', '**/*.class'
    }

    // ...
}
sourceset
a源,非编译类。您更应该将其用作依赖项。