Це перший раз, коли я використовую пакунки в 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
тоді ваша програма виконується гладко.