Java"无法找到或加载主类"当试图在命令行上运行时

时间:2015-10-09 18:18:25

标签: java

我有一个java项目,其目录结构如下:

java 
   | build
   | src
     | gui
         |  Launcher.java

我正在使用以下命令将程序编译为.class文件:

find -name "*.java" > src.txt
javac -d build @src.txt
rm $src.txt

编译后,项目目录如下所示

java 
   | build
     | gui
        |   Launcher.class 
   | src
     | gui
         |  Launcher.java

当我尝试使用:

运行程序(main在Launcher.java中)时
java -cp .:build:**/*.class gui.Launcher

我收到错误说:

Error: Could not find or load main class gui.Launcher

有人看到什么错了?

注意:我在Windows上使用cygwin

2 个答案:

答案 0 :(得分:0)

因为您的类路径语法已关闭。

java -cp .:build:**/*.class gui.Launcher

应该是(在Unix上)

java -cp .:build/ gui.Launcher

或(在Windows上)

java -cp .;build/ gui.Launcher

答案 1 :(得分:0)

对于Linux / Unix和Windows(没有Cygwin),另一个答案是正确的。但是,当使用Cygwin的Java时,Cygwin尝试像Linux / Unix一样,但是Java是一个Windows二进制文件,因此不能理解Linux / Unix路径语法。

以下是使用Cygwin的类路径运行java(或javac)时需要执行的操作。首先使用分号作为路径分隔符,然后将整个路径放在引号中:

java -cp 'some/directory;path/to/file.jar;etc' main.class.Name <arguments>

请注意,您还可以尝试使用cygpath实用程序将Linux / Unix样式路径转换为Java可以理解的Windows格式。