【问题标题】:java package does not exist and bad source filejava包不存在且源文件错误
【发布时间】:2012-08-24 22:58:29
【问题描述】:

所以我创建了一个名为 util 的文件夹,并在其中放置了四个类以及名为 unit10Assignment 的程序。我创建了一个 package 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,还是会出现这个坏源的问题。

感谢您的帮助

【问题讨论】:

    标签: java packages


    【解决方案1】:

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

    util/
        Employee.java
        unit10Assignment.java
    bin/
    

    (如果不是,那很好 - 只要它们在 some 文件夹中。不过,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

    【讨论】:

    • 它只是一个文件夹,很像util/。通常这是二进制文件存在于项目中的位置(因此 bin)。
    【解决方案2】:

    确保:

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2011-09-16
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 2020-11-07
      • 2020-05-23
      相关资源
      最近更新 更多