从命令行运行Java程序

dec*_*cal 2 java command

所以我在这里有一个noob时刻,我以前从未使用命令行来运行java程序,但我现在需要.我遇到的问题是,当我尝试运行程序时,我得到一个ClassNotFoundException.我的班级名为OmadUpdate.我已经使用javac命令将OmadUpdate.java文件编译成OmadUpdate.class.我已经检查了目录,它们肯定都在那里,但是当我运行java OmadUpdate命令时,它会给我一条错误消息说

Exception in thread "main" java.lang.NoClassDefFoundError: OmadUpdate (wrong name:     org/openmetadata/main/OmadUpdate)
......
......
Could not find the main class: OmadUpdate. Program will exit
Run Code Online (Sandbox Code Playgroud)

但它就在目录中.当我输入dir时,我同时拥有OmadUpdate.class和OmadUpdate.java.我甚至尝试使用"java org.openmetadata.main.OmadUpdate",因为这是它所包含的包名.我很难过.谢谢你的帮助.

DNA*_*DNA 8

您的类似乎已在org.openmetadata.main包中声明.

要使java正确加载类,它需要在与包结构匹配的正确目录结构中.

所以classfiles org.openmetadata.main.OmadUpdate应该在目录中org\openmetadata\main.

然后,当您运行该java命令时,此目录结构的根应该在类路径上 - 对于一个简单的示例,这只意味着您当前的目录应该是父目录 org\openmetadata\main.

在运行时,java您需要使用句点而不是斜杠来指定完整的类名,即

java org.openmetadata.main.OmadUpdate
Run Code Online (Sandbox Code Playgroud)


rob*_*rob 5

使用 javac 编译该类后,您将拥有以下目录结构:

org/
  openmetadata/
    main/
      OmadUpdate.class
      OmadUpdate.java
Run Code Online (Sandbox Code Playgroud)

确保您位于 org 的父目录中,然后运行

java -cp . org.openmetadata.main.OmadUpdate
Run Code Online (Sandbox Code Playgroud)