Java中的包

时间:2014-01-17 21:22:05

标签: java packages

这是我第一次在Java中使用软件包,我不知道哪里出错了。我正在尝试制作俄罗斯方块游戏。这是我的代码的一部分:

package mytetris;

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

public class Tetris extends JFrame {

    // class constructor
    public Tetris() {
        super("Tetris");
        this.setSize(400, 600);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        // just started, haven't really done anything

        this.setVisible(true);
    }

    public static void main(String[] args) {
        Tetris myTetris = new Tetris();
    }
}

然后我使用javac Tetris.java编译它然后我尝试使用java Tetris运行它,这是终端给我的:

Exception in thread "main" java.lang.NoClassDefFoundError: Tetris (wrong name: mytetris/Tetris)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

6 个答案:

答案 0 :(得分:3)

假设您的文件位于/home/mytetris/Tetris.java

然后你需要在home目录中运行“java mytetris.Tetris”。

因为您指定了包mytetris,它会在mytetris目录中找到您的文件,在那里它会找到Tetris类。

答案 1 :(得分:1)

我认为你应该把它称为

java mytetris.Tetris

答案 2 :(得分:0)

java mytetris.Tetris

使用完全限定的类名

答案 3 :(得分:0)

假设您有以下项目结构:

project/src/mytetris/Tetris.java
project/classes

从项目目录运行:

javac src/mytetris/Tetris.java -d classes

它将编译Tetris.java并将其放入类dir。

答案 4 :(得分:0)

如果您通过命令javap观察编译代码,即您的类名,即

javap Tetris然后将其显示为

class mytetris.Tetris{

}

所以当你执行这个程序时,你必须给出这样的命令。

java mytetris.Tetris然后你的程序顺利执行。

答案 5 :(得分:0)

此错误是因为您的程序中提到的类不受类加载器中的JVM支持。导致此错误的原因多种多样。 在此处查看详细概念https://te-xplore-ch.blogspot.com/2020/08/java-architecture.html 可能是您的软件包未添加到源文件夹中。 单击该文件夹的构建路径,然后单击用作源文件夹