如何在Java中设置当前目录的类路径?

5
如何将当前文件夹包含在类路径中?我有一个工具类和一个主类,如下所示:
/home/project/Main.class
/home/project/libs/com/fr/Utility.class

当我尝试在 /home/project/ 目录下运行 Main 类时:
java -cp "libs/*;" Main

我遇到了以下错误。
Error: Could not find or load main class Main

编辑:

主要类;

import com.fr.Utility;

public class Main{
 ....
}

实用程序类;

package com.fr;

public class Utility{
 ....
}

当我执行时;
java -cp .:libs/* Main

我遇到了以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/fr/Utility
Caused by: java.lang.ClassNotFoundException: com.fr.Utility

你当前的目录是什么? - Shubhendu Pramanik
3个回答

5
如果您正在使用Linux,则应该使用冒号:作为路径分隔符;如果是Windows,则应该使用分号;。此外,还需在类路径中包括当前路径的点.,并从类路径中删除通配符*java -cp .:libs/ Mainjava -cp .;libs/ Main 请参见这个答案这份文档中的“了解类路径通配符”部分。

当我运行你的命令时,我得到了“Exception in thread "main" java.lang.NoClassDefFoundError: com/fr/Utility”的错误。 - hellzone
@hellzone 请尝试从libs / *中移除通配符。 - am9417
"java -cp .:libs Main" 运行良好。 - hellzone

4

使用 . 表示当前文件夹:

java -cp .;libs/ Main

1
以下是关于编程的内容,请将其从英文翻译成中文。只返回翻译后的文本:最好附上解释。 - Shubhendu Pramanik
仍然出现相同的错误。 - hellzone
2
在Linux或macOS上,使用:(冒号)而不是;(分号)作为路径分隔符。 - Jesper

1

试一下

java -cp .;libs/ Main

主要问题可能是:
  1. 当前类路径不会默认包含在自定义类路径中。
  2. 包含 * 的类路径条目无法匹配 .class 文件,也无法递归搜索子目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接