/ / Pakiety w Javie - java, pakiety

Pakiety w Javie - java, pakiety

To mój pierwszy raz, gdy korzystam z pakietów w Javie i nie wiem, gdzie się pomyliłem. Próbuję stworzyć grę Tetris. Oto część mojego kodu:

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();
}
}

Następnie skompilowałem go za pomocą javac Tetris.java a następnie próbowałem go uruchomić java Tetris, to właśnie dał mi terminal:

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)

Odpowiedzi:

3 dla odpowiedzi № 1

Załóżmy, że masz plik w /home/mytetris/Tetris.java

Następnie musisz uruchomić „java mytetris.Tetris” w katalogu głównym.

Ponieważ określiłeś pakiet mytetris, znajdzie on pliki w katalogu mytetris, gdzie znajdzie klasę Tetris.


1 dla odpowiedzi nr 2

Myślę, że powinieneś to nazwać

java mytetris.Tetris

0 dla odpowiedzi № 3

próbować

java mytetris.Tetris

użyj pełnej nazwy klasy


0 dla odpowiedzi nr 4

Zakładając, że masz następującą strukturę projektu:

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

Uruchom z projektu reż:

javac src/mytetris/Tetris.java -d classes

Skompiluje Tetris.java i umieści go w klasach reż.


0 dla odpowiedzi № 5

Jeśli obserwujesz kod kompilacji za pomocą polecenia javap, twoja nazwa klasy, tj

javap Tetris następnie wyświetla go jako

class mytetris.Tetris{

}

Więc kiedy wykonasz ten program, musisz wydać takie polecenie.

java mytetris.Tetris wtedy twój program działa płynnie.