#java #swing #canvas #window #repl.it
#java #swing #canvas #окно #repl.it
Вопрос:
Итак, это конечная ошибка, которую я получаю:
не удалось найти или загрузить основной класс main, вызванный java.lang.classnotfoundexception main
Это код, который я использую: Main.java
package com.test.main;
import java.awt.Canvas;
public class Main extends Canvas implements Runnable {
private static final long serialVersionUID = -235234634745643747L;
public static final int WIDTH = 640, HEIGHT = WIDTH /12 * 9;
public Game() {
new Window(WIDTH, HEIGHT, "Test Window", this);
}
public synchronized void start() {
}
public void run() {
}
public static void main(String args[]){
new Game();
}
}
Window.java
package com.test.main;
import java.awt.Canvas;
import java.awt.Dimension;
import javax.swing.JFrame;
public class Window extends Canvas{
private static final long serialVersionUID = -235234634745643747L;
public Window(int width, int height, String title, Game game) {
JFrame frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.add(game);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
game.start();
}
}
Итак, вопрос в том, что я делаю не так? Я не думаю, что ошибка исходит из моего кода, я считаю, что это должно что-то делать с файлами (PS: я использую Repl.it на Java swing).
Комментарии:
1. Итак, я думаю, что проблема возникает из-за этого, потому что ошибка ранее в коде выводит это: ошибка: недопустимое объявление метода; требуется возвращаемый тип public Game () { (Стрелка указывает на g в «public Game () {» )
Ответ №1:
Как указано в ошибке, метод определен неправильно, потому что в нем отсутствует возвращаемый тип. Из существующего кода кажется, что вы намеревались определить конструктор из-за вызова
new Game();
в методе main. Однако конструктор должен иметь то же имя, что и класс, в котором он определен, поэтому вы должны изменить его имя, вот так
public Main() {
а также обновите вызов в main () до
new Main();