【发布时间】:2016-10-18 03:33:32
【问题描述】:
Maven 项目通常组织为 src/main/java/somepackage,但有时我的 Eclipse 也会将 src/main/java 识别为包的一部分。如何解决这个问题? 在下图中,common 和 helloworld 都是 maven 项目,其中 common 组织正确但 helloworld 不是。
【问题讨论】:
Maven 项目通常组织为 src/main/java/somepackage,但有时我的 Eclipse 也会将 src/main/java 识别为包的一部分。如何解决这个问题? 在下图中,common 和 helloworld 都是 maven 项目,其中 common 组织正确但 helloworld 不是。
【问题讨论】:
src 目录是 Eclipse 存储源代码的默认目录,而在 Maven 中是src/main/java。最好检查.classpath 文件是否未被损坏或外部修改。它应该包含如下内容:
<classpathentry kind="src" output="target/classes" path="src/main/java">
【讨论】:
Java Build Path/sources 窗口进行可视化编辑。但是文件有可能在外部被损坏或覆盖(可能是从源代码控制系统意外下载)。
代码行package main.java.helloworld;
在 helloworld 项目中会产生这个 package 层次结构:
main
`-+ java
`-+ helloworld
这真的是你的意思吗?
在一个 maven 项目中,你有这个目录结构:
src
`-+ main
| `-+ java
| | `-+ <here your packages and classes>
| '-+ resources
|
'-+ test
| `-+ java
| | `-+ <here your test packages and classes>
| '-+ resources
src/main/java(生产代码)和src/test/java(仅限测试)是包层次结构的根。如果您在test/java 中创建嵌套包com.enterprise 并在enterprise 中创建一个类Test,那么您必须在Test.java 中插入此包声明:package com.enterprise;
看看你在 helloworld 项目中的目录和包结构。
【讨论】:
package main.java.helloworld;。这意味着您将main、java 和helloworld 声明为包。这对于eclipse来说是混淆和错误的,因为main和java属于maven文件夹结构。