Java 当将我的类放入包中时,代码会中断

Java 当将我的类放入包中时,代码会中断,java,Java,我有一些java类工作得很好,直到我把它们放入一个包(它们真的应该在包中),我不知道为什么 班级委员会 import javax.swing.JPanel; public class Board extends JPanel { public Board() { } public static void main(String[] args) { } } 类骨架 import javax.swing.JFrame; public class Skeleto

我有一些java类工作得很好,直到我把它们放入一个包(它们真的应该在包中),我不知道为什么

班级委员会

import javax.swing.JPanel;

public class Board extends JPanel {
    public Board() {
    }

    public static void main(String[] args) {
    }
}
类骨架

import javax.swing.JFrame;

public class Skeleton extends JFrame {

    public Skeleton() {
        add(new Board());
        setTitle("Skeleton");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 280);
        setLocationRelativeTo(null);
        setVisible(true);
        setResizable(false);
    }
    public static void main(String[] args) {
        new Skeleton();
    }
}
所有这些都很好,直到我把

包骨架

在每一个的顶部

这样做后,我得到

skeleton.java:9: error: cannot find symbol
        add(new Board());
                ^
  symbol:   class Board
  location: class Skeleton
1 error
Error: Could not find or load main class skeleton.Skeleton
这可能是我忽略了的一件简单的事情,但我似乎无法找出它有什么问题

编辑

这两个类都位于名为skeleton的文件中,skeleton始终拼写正确

我在Board.java和Skeleton.java上运行javac,在Skeleton.Skeleton上运行java

编辑2

我修好了

skeleton.java:9: error: cannot find symbol
            add(new Board());
                    ^
      symbol:   class Board
      location: class Skeleton
错误,我忘记将每个文件分别传递给javac,但是

Error: Could not find or load main class skeleton.Skeleton

仍然存在。

除非您将这两个文件都传递给
javac
,否则它将在文件
skeleton/Board.java
中相对于源路径上的目录查找
skeleton.Board


您需要重新修改目录结构,以便两个文件都位于类路径中名为“skeleton”的目录中,或者将两个文件作为参数传递给
javac

我在我的机器中重新创建了代码,并且工作正常

将它们命名为Board.java和Skeleton.java


~$ cd skeleton
~/skeleton$ ls
Board.java  Skeleton.java
~$ cd ..
~$ javac skeleton/*.java
~$ ls skeleton
Board.class  Board.java  Skeleton.class  Skeleton.java
~$ java skeleton.Skeleton
输出在我的屏幕上闪烁

我也这样累了


~$ cat arglist
skeleton/Board.java
skeleton/Skeleton.java
~$ javac @arglist
~$ java skeleton.Skeleton 

这也行。

我对同一类型的文件也有同样的问题。 但是,我成功地编译了这两个文件: 光盘 并从父文件夹编译,如下所示:

zetcode/*.java

汇编工作取得了成功。但是当我试着

zetcode>JavaSnake

错误:无法找到或加载主类

唯一的解决方案是转到两个文件夹,即包的根目录 从这里开始

java com.zetcode.Snake


它成功了。

很抱歉,这听起来太夸张了,但您是否在两个java文件中的每个文件中拼写“skeleton”相同;并将它们都移动到名为skeleton的目录中?将包skeleton中的类移动到skeletonAha文件夹中!对于一个名为skeleton的类,您似乎有skeleton.java,小写。文件名必须与类名匹配,包括大小写。这有用吗?实际上Skeleton.java有一个大写字母“S”。真的吗?您粘贴的错误消息似乎表明情况并非如此。您用来编译它的javac命令是什么?我已经在两个文件上传递了javac,在骨架上传递了java。Skeleton@Allen,如果您使用
-verbose
运行
javac
,它应该打印像
[源文件搜索路径:…][类文件搜索路径:…]
这样的行。包含
skeleton
目录的目录是否在这些列表中的任何一个上?我已经更新了这个问题,通过使用您的解决方案修复了一个问题,但另一个问题仍然存在。这与其说是一个答案,不如说是一个正在做不同事情的声明。如果@John的答案(+1)证明它在原则上是可行的,那么这表明您在编译或运行代码时遇到了一些小问题。继续寻找打字错误,或者尝试像John那样编译/运行。