Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的包_Java_Packages - Fatal编程技术网

Java中的包

Java中的包,java,packages,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, 60

这是我第一次在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
编译它,然后我试着用
javatetris
运行它,这就是终端给我的:

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)
试一试


使用完全限定的类名

我想你应该把它叫做

java mytetris.Tetris

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

然后您需要在home目录中运行“javamytetris.Tetris”


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

假设您拥有以下项目结构:

project/src/mytetris/Tetris.java
project/classes
从项目目录运行:

javac src/mytetris/Tetris.java -d classes

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

如果您通过命令javap-your-class-name观察编译代码,即

javap俄罗斯方块
然后显示为

class mytetris.Tetris{

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


javamytetris.Tetris
然后您的程序将顺利执行。

此错误是因为您的程序中提到的类不是由类加载器中的JVM生成的。这一错误有多种原因。 检查这里的详细概念 可能是您的包未添加到源文件夹中。 单击文件夹的生成路径,然后单击用作源文件夹
class mytetris.Tetris{

}