Eclipse javadoc: тип package-info уже определен

ОС: Windows 7 x64

Платформа Eclipse: 3.7.2.M20120208

m2e: 1.0.200.20111228-1245

У вас есть аналогичная проблема, как в этом bug. В папках /src и /test есть куча файлов package-info.java, поэтому они имеют один и тот же пакет. Ошибка Eclipse:

"The type **package-info** is already defined"

Я могу удалить файлы package-info.java либо в /test, либо /src, чтобы избежать указания проблемы. Но это обходное решение не очень удобно, так как я использую SCM и вам нужно удалять эти файлы все время после обновления. То же самое для Eclipse Platform 4.2.0.I20120608-1400

Ответы

Ответ 1

Есть несколько вариантов решения этой проблемы:

  • Удалите файлы package-info.java и замените их на файлы package.html.
  • В файле src/tree есть только файлы package-info.java, так как пакеты с одинаковым именем в тесте/дереве будут "перекрываться" с src/tree.
  • Создайте javadoc отдельно для src/и test/trees, так как они, вероятно, для разных аудиторий.

Ответ 2

Вы можете сделать это →

Перейти к пути сборки → настроить путь сборки →

на вкладке Источник →

выберите пакет (в котором у вас есть этот проблемный файл package-info.java) например. имя-проекта/SRC/тест/Java

нажмите на exclude → и в шаблоне исключения добавьте "**/package-info.java"

это должно решить проблему, так как вы просто просите eclipse исключить эти файлы и, следовательно, вам не нужно будет удалять эти файлы и решать ваши проблемы, связанные с SCM.

Ответ 3

Если вы используете maven и m2e для взаимодействия между eclipse и maven. Существует довольно чистое решение: добавьте профиль в pom.xml, который активируется только m2e и предотвращает компиляцию package-info.java в фазе тестового компиляции. Здесь образец:

 <profile>
       <id>m2e</id><!--This profile is activated when eclipse interacts with maven (using m2e).-->
           <activation>
                <property>
                    <name>m2e.version</name>
                </property>
            </activation>
           <build>
                <plugins>
                    <plugin>
                        <!--eclipse do not support duplicated package-info.java, in both src and test.-->
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                              <id>default-testCompile</id>
                              <phase>test-compile</phase>
                              <configuration>
                                <testExcludes>
                                  <exclude>**/package-info.java</exclude>
                                </testExcludes>
                              </configuration> 
                              <goals>
                                <goal>testCompile</goal>
                              </goals>
                            </execution>                  
                        </executions>
                    </plugin>
                </plugins>
        </build>
</profile>