如何使用 javac 正确编译 java 文件?

how to correctly compile java files with javac?

所以我试图在没有 eclipse 的情况下从终端编译一些 java 代码。 我正在关注本教程 https://www.mkyong.com/java/java-rmi-hello-world-example/ 所以我下载了 3 java 个文件,并用 javac *.java 没有错误,我得到了 3 .class 文件

但是当我运行 java ServerOperation 我得到了

Exception in thread "main" java.lang.NoClassDefFoundError: ServerOperation (wrong name: com/mkyong/rmiserver/ServerOperation)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
    at java.net.URLClassLoader.access0(URLClassLoader.java:64)
    at java.net.URLClassLoader.run(URLClassLoader.java:354)
    at java.net.URLClassLoader.run(URLClassLoader.java:348)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:312)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我想我没有正确编译文件,但我不知道该怎么做。 我应该使用什么命令来编译?

更新: 删除所有包声明后修复 如何将其标记为已解决 特别感谢 Tom 的无用评论

编译正确。

但是,您的主要 class 放在 中。

这是因为ServerOperation.java的第一行:

package com.mkyong.rmiserver;

为了 运行 程序,您必须在 运行ning main class 时包含包。这意味着您必须导航到 package/directory 的根目录(在本例中,就在 com 文件夹之前)。

同时键入:

$ java com.mkyong.rmiclient.ServerOperation