Eclipse总是希望代码在com \ folder而不是com.folder中

时间:2011-12-03 00:50:24

标签: java eclipse

我有com.company.database.mysql和com.company.database.sqlite。我只想包含com.company.database.mysql。

我的代码是在文件夹中组织的(例如com / company / database / mysql)但现在我想让它变平(例如com.company.database.mysql),这样我就可以只包含mysql代码。

Eclipse似乎不允许我这样做。它抱怨包是错误的“声明的包”com.company.database.mysql“与预期的包”不匹配“”它只有在我解开它时才有效(即com / company / database / mysql)。

如何让eclipse与名为com.company.etc的文件夹中的代码一起使用,而不是使用子文件夹?

4 个答案:

答案 0 :(得分:2)

你做不到。路径中的点是目录分隔符。

对于已编译的代码,您可以将类文件存储在jar中。 jar中的目录路径仍然是您创建的树。

如果你真的想要展平结构,请使用与句点不同的字符。但是,我不建议您使用这种非标准解决方案。

答案 1 :(得分:2)

问题是Java编译器将包声明中的句点解释为单独的目录。因此,如果您的文件DataAccess.java如下:

package com.company.database.mysql

public class DataAccess {

}

编译器将坚持将此文件放在名为mysql的目录中,该目录名称为database,即......原来的目录结构:

src/main/java
   com
     company
       database
         mysql

这就是错误的原因。但是,您不必为了排除某些来源而花费很长时间。您可以管理项目的源路径(项目属性>构建路径)并排除一个或多个目录。

答案 2 :(得分:1)

这不是Eclipse的东西 - 这是Java规则的一部分,因此几乎每个Java编译器都可以工作。它希望你的文件位于名为com / company / database / mysql的文件夹中,而且它非常严格。

为了改变它,你需要摆脱包名,摆脱它中的点,把你的类放入一个jar(它仍然包含那个目录结构,但你可能只有com.company.database.mysql.jar而不是文件夹),或者更改Java本身。

答案 3 :(得分:1)

java编译器的惯例是源文件以特定方式布局(取决于平台/文件系统)。如果我理解正确,我认为你是在试图违背这一惯例。

来自http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

  

您应该将源文件排列在反映的目录树中   他们的包树。例如,如果您保留所有源文件   C:\ workspace,com.mysoft.mypack.MyClass的源代码应该是   在C:\ workspace \ com \ mysoft \ mypack \ MyClass.java。