gpt4 book ai didi

java - 多级包 - Java

转载 作者:行者123 更新时间:2023-12-01 16:28:32 25 4
gpt4 key购买 nike

我只是java新手,我是第一次使用包。我正在尝试在这个层次结构中制作包:

/chess/game/Pieces.class

/chess/Board.class imports Pieces

/Game.java imports Board

我仅使用 javac filename.java 进行编译来获取类文件。

为了确定,Game.java 没有使用 Pieces.class 的任何方法和变量。所有的类、函数和变量都是公共(public)的。我用 main 测试了 board.java,它工作得很好。但是当我将它用作包时,它不起作用,并且我找不到类。

Exception in thread "main" java.lang.NoClassDefFoundError: game/Pieces
at chess.Board.initializeboard(Board.java:31)
at Game.main(Game.java:14)
Caused by: java.lang.ClassNotFoundException: game.Pieces
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at chess.Board.initializeboard(Board.java:31)
at Game.main(Game.java:14)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at jdk.compiler/com.sun.tools.javac.launcher.Main.execute(Main.java:415)
at jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:192)
at jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:132)

我无法导入 Game.java 中的两个类,因为我制作了//包游戏;在 Pieces.class 中所以我不能将其导入为//import chess.game.Pieces;在 Game.java 中。

如果这是非法的。是否还有其他 OOP 方法?

编辑-我使用的代码-Pieces.java -(将其编译为.class文件)

package game;

import javax.swing.JButton;

public class Pieces{
public enum Type {ROOKE,KNIGHT,BISHOP,KING,QUEEN,PAWN};

public boolean alive = true;
public boolean white = false;
public boolean firstmove = false;
public int mx;
public int my;
public Type types;

public JButton button=new JButton();
public void setButton(JButton b){
this.button=b;}

}

Board.java -(将其编译为.class文件)

package chess;

import game.*;

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;

public class Board{

public void initializeboard(JButton [][] spots){
JFrame f = new JFrame("CHESS");
f.setVisible(true);
f.setSize(800,800);

GridLayout layout =new GridLayout(8,8,1,1);
f.setLayout(layout);

for(int ver=0;ver<8;ver++){
for(int hor=0;hor<8;hor++){
JButton button = new JButton();
if((ver+hor)%2==0){
button.setBackground(Color.WHITE); }
else{
button.setBackground(new Color(255,205,51)); }
Pieces p =new Pieces();
spots[ver][hor] = button;
p.setButton(button);
f.add(button);
} //close for loop
} // close for loop
f.revalidate();
} // close initializeboard
}// close board

游戏.java-

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;

import chess.Board;
public class Game{
public static void main(String [] args){

JButton [][] spots =new JButton [8][8];

Board b =new Board();
b.initializeboard(spots);
}
}

最佳答案

  1. 转到包含文件 Game.java 的目录
  2. 输入此命令
    javac chess/game/Pieces.java
  3. 之后,输入此命令
    javac -cp . game/Board.java
  4. 之后,输入此命令
    javac -cp . Game.java

关于java - 多级包 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62105771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com