Java 当将我的类放入包中时,代码会中断
我有一些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
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那样编译/运行。