【问题标题】:Cannot access class in java无法访问java中的类
【发布时间】:2021-07-19 03:06:50
【问题描述】:

我正在尝试创建一个类以在一周中的某一天发送信息。出于某种原因,当我尝试包含该类时,我收到一条错误消息:

CreateCalendarVisuals.java:1: error: cannot access FindDateFindTime
import FindDateFindTime.FindDateFindTime;
                       ^
  bad class file: .\FindDateFindTime\FindDateFindTime.class
    class file contains wrong class: FindDateFindTime
    Please remove or make sure it appears in the correct subdirectory of the classpath.

我已创建此代码来查找日期/时间:

import java.time.LocalDate;
import java.time.DayOfWeek;
import java.time.LocalTime;

public class FindDateFindTime
{
// public static void main(String[] args)
// {
//         LocalDate date = LocalDate.now();
//         LocalTime time = LocalTime.now();
//
//         System.out.println("Date: " + date + "; Time: " + time);
// }

public int dayOfWeek(int year, int month, int day)
{
        LocalDate date = LocalDate.of(year, month, day);

        DayOfWeek d = date.getDayOfWeek();
        return d.getValue();
}
}

这个类是公开的,所以我不知道为什么它会说它不能访问。我正在尝试使用以下代码调用该类:

import FindDateFindTime.FindDateFindTime;

public class CreateCalendarVisuals
{
public static void main(String[] args)
{
        FindDateFindTime d = new FindDateFindTime();
         System.out.println(d.dayOfWeek(2021, 04, 24));
}
}

我的 FindDateFindTime 类位于同名文件夹中,所以我就是这样,我有“导入 FindDateFindTime.FindDateFindTime”。我试图查找此内容,但似乎找不到任何解决方案。我也尝试过用一个包来做到这一点,但它给了我同样的问题。有人可以帮忙吗,老实说我不知道​​该怎么办。

【问题讨论】:

  • FindDateFindTime 是否使用同名包?如果没有,那么导入应该更简单:import FindDateFindTime;

标签: java class include cannot-find-symbol


【解决方案1】:

您的类CreateCalendarVisualsFindDateFindTime 类导入为FindDateFindTime.FindDateFindTime;这意味着您的课程FindDateFindTime 属于包FindDateFindTime,因此您的课程FindDateFindTime 的第一行必须是package FindDateFindTime。请注意,根据package naming conventions,您的包名称应在 finddatefindtime 命名目录中重写为 finddatefindtime,因此您的 FindDateFindTime 类声明应为:

package finddatefindtime;

public class FindDateFindTime { ... }

还有你的CreateCalendarVisuals 班级:

import finddatefindtime.FindDateFindTime;

public class CreateCalendarVisuals { ... }

【讨论】:

  • 我已尝试按照您所说的添加包,并在命令提示符中执行了“javac -d . FindDateFindTime.java”,这使得文件夹与 .class 文件一起出现。现在我收到一条错误消息 Error: Could not find or load main class FindDateFindTime Caused by: java.lang.NoClassDefFoundError: finddatefindtime/FindDateFindTime (wrong name: FindDateFindTime) 在 CreatCalendarVisuals 中,我收到此错误消息 CreateCalendarVisuals.java:1: error: package finddatefindtime does not exist import finddatefindtime.FindDateFindTime;
  • @KlutzyMender,如果你有一个包含 CreateCalendarVisuals.java 的文件夹和一个包含 FindDateFindTime.java 的子文件夹,你必须执行javac CreateCalendarVisuals.java 来编译这两个文件。
  • 好的,我对此很陌生,所以我很困惑,即使我执行 CreateCalendarVisuals 我仍然会收到此错误,因为我不知道如何创建包。
  • CreateCalendarVisuals.java:1: error: package finddatefindtime does not exist import finddatefindtime.FindDateFindTime; ^ CreateCalendarVisuals.java:7: error: cannot find symbol FindDateFindTime d = new FindDateFindTime(); ^ symbol: class FindDateFindTime location: class CreateCalendarVisuals CreateCalendarVisuals.java:7: error: cannot find symbol FindDateFindTime d = new FindDateFindTime(); ^ symbol: class FindDateFindTime location: class CreateCalendarVisuals 3 errors
  • @KlutzyMender 您必须创建一个包含 CreateCalendarVisuals.java 的目录和一个名为 finddatefindtime 的子目录,其中包含 FindDateFindTime.java。
【解决方案2】:

如果你使用的是同一个包,你不需要导入类如果你使用eclipse和netbeans。{第一个程序的输出 no necessary to import the class if it is in the same package

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2013-10-21
    • 2017-03-27
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    相关资源
    最近更新 更多