java包不存在和坏的源文件

所以我创建了一个名为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,这个问题与坏源仍然出现。

谢谢你的帮助

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

 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将此文件夹添加到其类路径中。

*:实际上,非常大的项目通常可以使用与其他类相同的名称; 如果你想使用特定的一个,你必须使用完全限定的类名 。

确保:

  • 文件名与类名匹配(例如Employee.java用于类Employee
  • 根据文件包(即util ),文件在相应的文件夹中

你在使用任何IDE吗? 如果没有,使用一个真正有助于这种事情。