试图在终端中编译java程序

试图在终端中编译java程序,java,terminal,Java,Terminal,我只是想通过终端编译一个简单的hello world文件。 以下是Hello.java的代码: package Hello; public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } 这保存在另一个文件夹中,因此在terminal I中键入: cd-code/repositories/java导航到正

我只是想通过终端编译一个简单的hello world文件。 以下是
Hello.java
的代码:

package Hello;
public class Hello {
    public static void main(String[] args) {        
        System.out.println("Hello, world!");
    }
}
这保存在另一个文件夹中,因此在terminal I中键入:

cd-code/repositories/java
导航到正确的目录(我在那里保存了
Hello.java
) 接下来我键入
javac Hello.java
并点击return。它编译时没有任何错误。 然后,我尝试使用
java Hello
打开该文件,它引发了以下异常:

 Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: Hello/Hello)
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
   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

如何/为什么会发生这种情况,以及我如何着手解决它?

该包名为
Hello
,它使完整的限定名
Hello.Hello
,这意味着您需要将Hello.java文件保存在
code/repositories/java/Hello

然后cd到
code/repositories/java
文件夹并调用javac
javac Hello/Hello.java
然后您可以运行它
java Hello.Hello


在不同的注释中,java标准命名约定推荐包名使用小写字母,因此考虑将包更改为“hello”< /p> < p>移除行<代码>包hello;代码>。编译并运行。

您需要从类路径安装目录(上一级)运行
java
命令,所以我应该先
cd~
?我还有第二个问题(我必须删除
包hello;
),因此“尝试在终端中编译java程序”-终端不是唯一的问题。java部分也是错误的,所以idk如果它是完全重复的…是的,我意识到了小写名称(已经将其更改为
包hello;
)文件夹必须与包的大小写匹配,因此如果包现在是“hello”然后,文件夹也应该被称为+1,但您需要编译为
javac Hello/Hello.java
。哦,您是对的。修正了打字错误。谢谢太棒了,成功了!这最初是用Netbeans编写的,所以我理解其中的区别(它只是一个没有说
Hello
container文件夹的文件)。我还从NetBeans获取了代码。