所以我创建了一个名为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将此文件夹添加到其类路径中.
*:实际上,非常大的项目通常可以使用与其他类相同的名称;如果你想使用特定的,你必须使用fully-qualified class name.
标签:java,packages