java - 从命令行运行程序时找不到类
问题描述
这是我的项目的结构:
MyProject
-lib
-mp3agic-0.9.0.jar
-src
-com.company
-Main.java
在 Main 中,我导入了 mp3agic 的内容:
导入 com.mpatric.mp3agic.*;
在 MyProject 中,我使用以下方法编译该类:
javac -cp "lib/*" src/com/company/Main.java
从 MyProject/src,我尝试使用以下命令运行程序:
爪哇-cp。com/公司/主要
我收到以下错误:
线程“主”java.lang.NoClassDefFoundError 中的异常:com/mpatric/mp3agic/InvalidDataException
显然,jdk 在运行类时无法从 lib 文件夹中找到依赖项,尽管编译时不会出现此问题。我猜这个命令的语法有问题,但我就是找不到。
你能帮我么?
编辑:我解决了这个问题,将 lib 文件夹移动到 src 下,然后运行:
C:\MyProject\src>javac -cp "lib/*" com/company/Main.java
C:\MyProject\src>java -cp .;"lib/*" com/company/Main
现在,代码编译并执行没有任何问题。
但是,如果我将 lib 留在项目根目录下,则会发生以下情况:
C:\MyProject>javac -cp "lib/*" src/com/company/Main.java
C:\MyProject>java -cp .;"lib/*" src/com/company/Main
错误:无法找到或加载主类 src.com.company.Main
为什么?
解决方案
您应该使用 maven 或 gradle,否则您必须说明您使用的是哪个控制台,以及哪个操作系统 - 如果您不知道控制台是什么,您必须先在谷歌上搜索,然后再javac
直接搞乱 - 但是如果你坚持:
对于 Linux、OSX、任何类 UNIX:
javac -cp ".:lib/mp3agic-0.9.0.jar" src/com/company/Main.java
对于 Windows:
javac -cp ".;lib/mp3agic-0.9.0.jar" src/com/company/Main.java
在windows下运行:
java -cp .;lib\mp4agic-0.9.0.jar com.company.Main
您可能需要使用斜杠 (/) 而不是反斜杠,具体取决于您使用的控制台。或者只是尝试“/”或“\”,看看什么对你有用。
如果您仍然遇到类未找到异常,那么问题与类路径或java
命令无关,而是与您的代码有关(很难说,没有看到代码)。
推荐阅读
- python - Python 枚举
- excel - 为什么 Excel 无法识别 SUMPRODUCT 函数中的变量名称?
- java - 使用递归的 Reve 谜题的最优解
- html - ::-webkit-calendar-picker-indicator 在 Android 上不起作用
- javascript - 在vue中更改arcgis地图位置
- llvm - 如何从 MachO 二进制文件中提取 __bitcode/__bundle 部分
- swift - 当快照侦听器生效时,Tableview Like 按钮会重复
- python - 如何根据预先确定的兑换率兑换货币?(Python)
- rust - “如果让”和“如果”之间有区别吗?
- jmeter - 重复执行异步调用的请求,直到它在 JMeter 中遇到正确的响应