我有一个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
答案 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格式。