我有一个Spring组件DummyStorageRepository和用Groovy编写的接口StorageRepository
class DummyStorageRepository implements StorageRepository {...
}
现在在我的Application.java中,它也是一个Spring boot starter配置
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application implements AsyncConfigurer {
...
@Bean
public StorageRepository storageRepository() {
return new DummyStorageRepository();
}
我的Gradle.buid文件很简单.
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE'
classpath 'org.springframework:springloaded:1.2.1.RELEASE'
}
}
apply plugin: 'groovy'
apply plugin: 'spring-boot'
apply plugin: 'project-report'
apply plugin: 'eclipse'
apply plugin: 'idea'
targetCompatibility = 1.8
sourceCompatibility = 1.8
jar {
baseName = 'service'
version = '0.0.1'
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.7:indy'
compile 'org.springframework.boot:spring-boot-starter-actuator:1.1.8.RELEASE'
compile('org.springframework.boot:spring-boot-starter-web:1.1.8.RELEASE')
}
我的文件结构是
src/main/groovy/com/app/repository/DummyStorageRepository.groovy, StorageRepository.groovy
src/main/java/com/app/Application.java
src/main/resources/...
这是错误
/app/Application.java:103: error: cannot find symbol
public StorageRepository storageRepository() {
^
symbol: class StorageRepository
location: class Application
如果我将Application.java转换为Application.groovy并将其移动到groovy树,则所有内容都按预期编译.如果我将DummyStorageRepository.groovy和StorageRepository.groovy转换为java并将其移动到java树中,则同样适用.
如果有任何问题,我在gradle 2.1.
为什么我从java中引用groovy时出现“找不到符号”错误?
更新:
我手动将源集添加到我的gradle.build,只是为了查看扫描的路径但结果保持不变.
sourceSets {
main {
groovy {
srcDirs = ['src/main/groovy']
}
java {
srcDirs = ['src/main/java']
}
}
test {
groovy {
srcDirs = ['src/test/groovy','src/test/java']
}
java {
srcDirs = ['src/test/java']
}
}
}
解决方法:
所以这个答案应该归功于@tim_yates,但问题评论中给出的建议解决方案和理由都是合法的:
将所有.java文件移动到src / main / groovy下,并使用groovy编译器编译所有文件
推理:
为了引用java文件中的groovy代码和groovy文件中的java代码,你不能在compileGroovy中对compileJava有任何依赖关系,反之亦然,因此使用compileGroovy的联合编译必须同时进行.
参考文献:
Gradle User Guide – Groovy Plugin
Gradle compileGroovy dependency graph
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。