2016-10-18 64 views
3

Maven项目通常组织为src/main/java/somepackage,但我的eclipse有时也会将src/main/java识别为包的一部分。如何解决这个问题? 在下面的图片中,common和helloworld都是maven项目,其中common是正确组织的,但helloworld不是。Eclipse Maven项目包障碍

enter image description here

enter image description here

回答

1

src目录是默认 Eclipse存储源代码的目录,而在Maven中的目录是src/main/java。更好地检查.classpath文件是否已损坏或进行了外部修改。它应该包含这样的东西:

<classpathentry kind="src" output="target/classes" path="src/main/java"> 
+0

那真棒。只有一件事,我一直认为.class文件不应该手动修改,应该在eclipse中有一些条目,比如项目属性或窗口首选项。 – Tiina

+0

你是对的:.classpath文件不应该手动编辑。其内容必须通过项目的'Java Build Path/sources'窗口进行可视化编辑。但是有可能文件被外部破坏或过度使用(可能从源控制系统意外下载)。 –

0

的代码行
package main.java.helloworld;
在HelloWorld项目的结果在这个层次:

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/javacom.enterprise和内enterprise创建一个类Test,那么你必须在Test.java插入此包声明:
package com.enterprise;

采取HelloWorld项目看看你的目录和封装结构。

+0

我有这个maven默认文件夹层次结构,src/main/java/helloworld/Foo.java和helloworld是包。但是,当将这个maven项目导入eclipse时,有时(并非总是)它将这个src/main/java作为包的一部分,这一次(图中显示了helloworld)eclipse将main/java/helloworld作为包处理,并问我将包helloworld更改为包main.java.helloworld。 – Tiina

+0

看看你问题中的第二个截图。你写了'package main.java.helloworld;'。这意味着你将'main','java'和'helloworld'声明为包。这是令人困惑的日食和错误,因为'main'和'java'属于maven文件夹结构。 – JimHawkins

+0

这是eclipse自动修复。这是进口helloworld;并发生错误:声明的软件包“helloworld”与预期的软件包“main.java.helloworld” – Tiina