java包不存在和坏源文件

时间:2012-08-24 22:58:29

标签: java packages

所以我创建了一个名为util的文件夹,并在其中放置了四个类以及名为unit10Assignment的程序。我创建了一个包util并在每个类代码的顶部键入“package util;”,如下所示:

package util;

public class Employee

然后我写道:

import util.*;
import javax.swing.JOptionPane;

public class unit10Assignment

在程序之上。但是当我编译它时,它会告诉我。谁知道为什么?我试着玩它,当我输入import java.util *时它就消失了;相反,但我不确定我的老师想要什么,因为她的例子没有前面的java。

它还说“糟糕的源文件”“包不包含类Employee”然而,在我输入package语句之前编译并运行完美的所有内容并且从那时起我没有对代码进行任何更改。如果我从员工类中删除了package语句,则会出现相同的消息,但它会说另一个类不存在。

感谢您的帮助 注意:无论我是否放入java.util或者只是util,这个问题都会出现错误的来源。

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

我将假设您的项目设置如下:

util/
    Employee.java
    unit10Assignment.java
bin/

(如果不是,那很好 - 只要他们在某些文件夹中。bin/应该存在。)

软件包的工作方式是它们是硬盘驱动器上的文件夹 - 要导入的软件包要求您要导入的文件夹和类都存在于该特定文件夹中的 。这就是为什么包很方便 - 你可以有两个名为Employee的类,让它们生活在完全不同的位置。 *

以下是如何在不使用IDE的情况下将这些编译为类似于包的结构。将$ HOME替换为Java类文件夹的完整路径。

javac -sourcepath $HOME/util -d $HOME/bin *.java

以下是你主要课程的运作方式:

java -cp $HOME/bin util.$MAIN_CLASS

这些标志的含义细分:

  • -sourcepath指示javac查看此特定目录中的源文件。
  • -d指定.class文件的输出目录。
  • -cp指示java将此文件夹添加到其类路径中。

*:实际上,非常大的项目通常可以使用与其他类相同的名称;如果您想使用特定的一个,则必须使用fully-qualified class name

答案 1 :(得分:0)

确保:

  • 文件名与班级名称匹配(例如Employee.java的{​​{1}})
  • 根据文件包(即Employee
  • ,文件位于相应的文件夹中

您使用的是IDE吗?如果没有,使用一个真正有助于这种事情。