【问题标题】:Error when compiling cannont access class in the subdirectory编译时出错无法访问子目录中的类
【发布时间】:2017-04-21 23:33:00
【问题描述】:

我收到一个错误:

classpath.java:2:错误:无法访问学生 导入路径。学生; ^ 错误的类文件:./path/student.class 类文件包含错误的类:Lecture5_exercise.path.student 请删除或确保它出现在类路径的正确子目录中。

这是文件夹结构:

我有一个主要的“classpath.java”文件夹在lecture_5_exercise 下。 我正在尝试访问“path”文件夹中的“student.class”,该文件夹是 Lecture_5_exercise 的子目录。

import path.*;
public class classpath {
public static void main(String[] args) {

  student test = student.create();
    }
}

编辑: 这是我的 student.java

package Lecture5_exercise.path;

class student {

private student(){}

protected void f(){
    System.out.println("protected member! ");
}
public static student create(){
    return new student();
}}

【问题讨论】:

  • student.java 里面有什么?顶部有包声明吗?比如:包路径;这些类文件编译后你是否一直在移动它们?
  • @RaceYouAnytime 发布在 student.java 中,编译后我没有移动它们。
  • 我根据您的更新添加了一个答案。如果该导入更改修复了您的错误,请告诉我。
  • 您是否尝试过使用 IDE 并遵循 Java 约定,例如大写的类名和包中没有下划线?

标签: java import package


【解决方案1】:

在 Java 中导入的最佳做法是不使用通配符。只需输入包含包名和类名的完整导入即可。

import Lecture5_exercise.path.student;

它更干净,你不太可能遇到这样的错误。

Check out Google's Java style guide.

【讨论】:

  • 感谢您的评论。我收到新错误:错误:包 Lecture5_exercise.path 不存在。我正在检查您的链接。
  • @stacker 好吧,如果你的学生班说 package Lecture5_exercise.path;并且您的代码抛出错误,那么您的类路径中可能没有该包。您是否一直在手动移动 .class 文件?你是在 IDE 中开发这个吗?
  • 我没有移动任何类,我先编译了学生,然后马上编译了classpath.java。我正在使用 Visual Studio 代码。
  • 现在可以使用了,谢谢大家。我更改了 student.java: from package Lecture5_exercise.path;到包路径;
  • 但是,谁能告诉我为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
相关资源
最近更新 更多