无法找到或加载主 class osx 终端

Could not find or load main class osx terminal

此常见问题的

None 个答案解决了我的问题。

我有一个这样的文件目录树

root
 |
 +--> com
        |
        +--> Game.java
        +--> Window.java

我成功编译了Game.javaWindow.java,结果树是这样的

root
 |
 +--> com
        |
        +--> Game.java
        +--> Game.class
        +--> Window.java
        +--> Window.class

我将目录改回 root 并且 运行 从 osx 终端执行以下命令

java com.Game

并且我收到以下错误

Could not find or load main class

我不知道为什么,这是我的 类

Game.java

package com;

import java.awt.*;

public class Game extends Canvas implements Runnable {

    private static final long mSerialVersionUid = -240870510533527854L;

    public static final int WIDTH = 640, HEIGHT = WIDTH / 12 * 9;

    public Game(){

        new Window(WIDTH, HEIGHT, "Let's build a game!", this);
    }

    public synchronized void start(){

    }

    @Override
    public void run(){

    }

    public static void main(String[] args){


    }
}

Window.java

package com;

import java.awt.Canvas;
import javax.swing.JFrame;
import java.awt.Dimension;

public class Window extends Canvas {

    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.setVisible(true);
        game.start();
    }
}

这应该按预期工作 — 我 运行 你的代码在 macOS 10.12.4 上运行得很好 ;)

您可能有 CLASSPATH 环境变量 — 没有当前目录! — 在您的 shell 中定义。如果是这种情况,请试试这个:

java -cp . com.Game

顺便说一下,要实际显示您定义的 window,请在 main 方法中创建一个 Game 对象:

public static void main(String[] args) {
    new Game(); 
}