1

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

package util;

public class Employee

然后我写道:

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

public class unit10Assignment

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

它还说“错误的源文件”“包不包含 Employee 类” 但是,在我输入包语句之前,所有的东西都编译并运行得很好,从那以后我没有对代码进行任何更改。如果我从员工类中删除了包语句,则会出现相同的消息,但它会说另一个类不存在。

感谢您的帮助注意:无论我放 java.util 还是只放 util,仍然会出现这个错误来源的问题。

谢谢你的帮助

4

2 回答 2

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

*:非常非常大的项目通常可以使用与其他类相同的名称;如果您想使用特定的类名,则必须为其使用完全限定的类名

于 2012-08-24T23:39:26.910 回答
0

确保:

  • 文件名与类名匹配(例如Employee.java,对于 class Employee
  • 文件根据其包位于相应的文件夹中(即util

你在使用任何 IDE 吗?如果没有,使用一个真的对这类事情有很大帮助。

于 2012-08-24T23:09:20.780 回答