所以我创建了一个名为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,这个问题都会出现错误的来源。
感谢您的帮助
答案 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吗?如果没有,使用一个真正有助于这种事情。