如何使用 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
所以我试图在没有 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