Ben*_*ann 4 java groovy intellij-idea importerror
我在IntelliJ IDEA中有一个由Java和Groovy类组成的项目.这些类包含在我标记为源文件夹的文件夹"groovy"和"java"中.我有很多Java类从"groovy"源文件夹导入类,但是当我尝试运行它们时,我一直得到错误"java:package foo不存在".包"foo"直接存在于"groovy"文件夹下,因此应该可以正常工作.我在下面加了一个视觉.(我试图避免任何具体的细节.我可能会或可能不会在一个绝密的51区项目上工作.)
结构视觉:
project-folder
|
-src
|
-main
|
-groovy (marked as source)
||
|-foo
| |
| -bar.groovy
-java (marked as source)
|
- java class that imports "foo.bar"
Run Code Online (Sandbox Code Playgroud)
错误:java:包foo不存在
不起作用的事情:
将所有内容置于"框架"下并将它们直接放在"groovy"文件夹下.结果"无法解析符号栏"
取消项目和重建
你不应该"取消"你的项目.(虽然我理解建议你这样做的故障排除原因.)我怀疑问题是一个损坏的缓存或索引.转到文件>无效缓存.选择以使缓存无效,然后重新启动IDEA.让IDEA重新为该项目编制索引.事情应该没问题.如果没有,请检查1)您使用的是最新版本的IDEA(12.1.5)和2)最新版本的Groovy插件(文件>设置> [IDE设置]>插件).
当您使用maven时,您需要将"groovy"目录标识为POM中的其他源目录.如果不这样做,当IDEA重新导入项目(即重新同步到POM)时,它会将groovy目录作为源删除,因为默认情况下maven不认为它是源.如何执行此操作取决于您使用的插件.由于不再维护GMaven,我一直在使用groovy-eclipse-compiler插件.如果您使用该插件,插件将自动包含src/main/groovy为源(只要至少有一个java或groovy文件src/main/java).但是,IDEA不会选择该目录并将其作为源包含在内.这意味着如果您手动(或IDEA自动)运行maven重新导入,您的src/main/groovy目录将取消标记为源,IDEA将显示编译错误.您需要指定其他目录.您可以使用build-helper-maven-plugin来执行此操作,如groovy-eclipse-compiler 文档所推荐的那样.
这是一个工作Java/Groovy项目的POM的主要内容:
<properties>
<groovy.version>2.1.5</groovy.version>
<groovy-eclipse-compiler.version>2.8.0-01</groovy-eclipse-compiler.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>${groovy-eclipse-compiler.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.1.5-03</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/groovy</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)