IntelliJ IDEA-Erreur: java: le paquet foo n'existe pas


J'ai un projet dans IntelliJ IDEA qui se compose à la fois de classes Java et Groovy. Ces classes sont contenues dans les dossiers "groovy" et "java" que j'ai marqués comme dossiers source. J'ai beaucoup de classes Java qui importent des classes à partir du dossier source" groovy", mais lorsque j'essaie de les exécuter, j'obtiens systématiquement l'erreur"java: package foo n'existe pas". Le paquet " foo "existe directement sous le dossier" groovy", donc cela devrait fonctionner. J'ai inclus un visuel ci-dessous. (J'essaie d'éviter tout des détails spécifiques. Je travaille peut-être ou non sur un projet top secret de la zone 51.)

Structure visuelle:

project-folder
|
-src
 |
 -main
  |
  -groovy (marked as source)
  ||
  |-foo
  | |
  | -bar.groovy
  -java (marked as source)
   |
   - java class that imports "foo.bar"

Erreur: java: le paquet foo n'existe pas

Choses qui ne fonctionnent pas:

  • Tout prendre sous " framework "et les placer directement sous le dossier" groovy". Résultats dans "Impossible de résoudre la barre de symbole"

  • Unmavenizing projet et la reconstruction de

Author: Ben Dohrmann, 2013-10-07

3 answers

Vous ne devriez pas avoir à "démavéniser" votre projet. (Bien que je comprenne le raisonnement de dépannage pour vous suggérer de le faire.) Je soupçonne que le problème est un cache ou un index corrompu. Allez dans Fichier > Invalider le cache . Sélectionnez pour invalider le cache,puis redémarrez IDEA. Laissez IDEA réindexer le projet. Les choses doivent être très fines. Sinon, vérifiez que 1) vous utilisez la dernière version d'IDEA (12.1.5) et 2) la dernière version du plug-in Groovy (File > Settings > [Settings Settings] > Plugins ).

Lorsque vous utilisez maven, vous devrez identifier le répertoire "groovy" comme répertoire source supplémentaire dans votre POM. Si vous ne le faites pas, lorsque IDEA réimporte le projet (c'est-à-dire se synchronise au POM), il supprimera le répertoire groovy en tant que source car par défaut maven ne le considère pas comme une source. La façon dont vous faites cela dépend du plugin que vous utilisez. Depuis GMavenn'est plus maintenu, j'utilise le plugin groovy-eclipse-compiler. Si vous utilisez ce plug-in, le plug-in inclura automatiquement src/main/groovy en tant que source (tant qu'il y a au moins un fichier java ou groovy dans src/main/java). Cependant, IDEA ne prend pas ce répertoire et ne l'inclut pas non plus comme source. Cela signifie que si vous exécutez manuellement (ou automatiquement IDEA) une réimportation maven, votre répertoire src/main/groovy ne sera pas marqué comme source et IDEA affichera des erreurs de compilation. Vous devez spécifier le répertoire supplémentaire. Vous pouvez utiliser le build-helper-maven-plugin pour faire ce que l' la documentation de groovy-eclipse-compiler recommande.

Voici la viande et les pommes de terre d'un POM pour un projet Java / Groovy fonctionnel:

<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>
 4
Author: Javaru, 2013-10-07 21:44:53

Redémarrer IntelliJ :-) Stupide, mais c'est ce qui a fonctionné pour moi. Aucune idée de ce qui causait le problème, mais je suis heureux qu'il soit résolu. Espérons que cela aide aussi quelqu'un d'autre.

 1
Author: Snekse, 2016-01-15 23:18:50

J'ai eu le même problème. Dans mon cas, groovy compilation a enregistré RuntimeException comme avertissement. Ceci est dû au fait que Aucun chargeur de classe approprié n'a été trouvé pour grab. Après avoir résolu ce problème, les sources groovy ont été compilées avec succès et les classes Java ont pu les voir sur le chemin de classe.

 0
Author: suman j, 2017-05-23 11:44:57