我有一些工作正常的java类,直到我把它们放在一个包中(它们确实应该存在)并且我无法理解为什么。
班主任
import javax.swing.JPanel;
public class Board extends JPanel {
public Board() {
}
public static void main(String[] args) {
}
}
Class Skeleton
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();
}
}
所有这一切都正常,直到我把
package 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
仍然存在。
答案 0 :(得分:1)
我在我的机器中重新创建了代码并且工作正常。
将它们命名为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
这也有效。
答案 1 :(得分:1)
我对同一类型的文件遇到了同样的问题。 但是,我成功地编译了两个文件: cd .. 并从父文件夹编译如下:
zetcode / *。java的
汇编成功了。但是当我试着
时zetcode> java Snake
错误:无法找到或加载主类Snake
唯一的解决方案是最多两个文件夹,即包的根目录 并从那里发出问题
java com.zetcode.Snake
并且有效。
答案 2 :(得分:0)
除非您将这两个文件都传递给javac
,否则它会在文件skeleton.Board
中查找相对于源路径上的目录的skeleton/Board.java
。
您需要重新编写目录结构,以便两个文件都位于类路径中名为“skeleton”的目录中,或者将这两个文件作为参数传递给javac
。