Пакети в Java - java, пакети

Це перший раз, коли я використовую пакунки в Java, і я не знаю, де я пішов не так. Я намагаюся зробити гру Tetris. Ось частина мого коду:

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)

Відповіді:

3 для відповіді № 1

Припустимо, у вас є ваш файл у /home/mytetris/Tetris.java

Тоді вам потрібно запустити "java mytetris.Tetris" у каталозі home.

Оскільки ви вказали пакет mytetris, він буде шукати ваші файли в каталозі mytetris, де він знайде клас Tetris.


1 для відповіді № 2

Я думаю, ви повинні називати це як

java mytetris.Tetris

0 для відповіді № 3

спробуй

java mytetris.Tetris

використовувати повне ім'я класу


0 для відповіді № 4

Припускаючи, що у вас є така структура проекту:

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

Запустити з проекту dir:

javac src/mytetris/Tetris.java -d classes

Вона буде компілювати Tetris.java і поставити її в класи диригент.


0 для відповіді № 5

Якщо ви спостерігаєте код компіляції командою javap, то це ім'я вашого класу

javap Tetris то він відображає його як

class mytetris.Tetris{

}

Тому, коли ви виконуєте цю програму, ви повинні дати команду, як це.

java mytetris.Tetris тоді ваша програма виконується гладко.