Java 从命令行运行程序时未找到类

Java 从命令行运行程序时未找到类,java,classpath,Java,Classpath,以下是我的项目结构: MyProject -lib -mp3agic-0.9.0.jar -src -com.company -Main.java 在Main中,我导入了mp3agic的内容: 导入com.compatric.mp3agic.* 在MyProject中,我使用以下方法编译该类: javac-cp“lib/*”src/com/company/Main.java 在MyProject/src中,我尝试运行以下程序: java-cp。com/company/

以下是我的项目结构:

MyProject
-lib
   -mp3agic-0.9.0.jar

-src
   -com.company
      -Main.java
在Main中,我导入了mp3agic的内容:

导入com.compatric.mp3agic.*

在MyProject中,我使用以下方法编译该类:

javac-cp“lib/*”src/com/company/Main.java

在MyProject/src中,我尝试运行以下程序:

java-cp。com/company/Main

我得到以下错误:

线程“main”java.lang.NoClassDefFoundError中出现异常:com/mpatric/mp3agic/InvalidDataException

显然,jdk在运行类时无法从lib文件夹中找到依赖项,尽管编译时不会出现此问题。 我猜这个命令的语法有问题,但我就是找不到

你能帮帮我吗

编辑:我解决了这个问题,在src下移动lib文件夹,然后运行:

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


为什么?

java.exe-classpath{path}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

您可能需要使用斜杠(/)而不是反斜杠,具体取决于您使用的控制台。或者试试“/”或“\”看看什么适合你


如果您仍然得到类未找到异常,那么问题与classpath或
java
命令无关,而是与您的代码有关(很难说,没有看到代码)。

显然,jdk在运行类时无法从lib文件夹中找到依赖项,尽管在编译时不会出现此问题。
因为您在编译时将
lib/*
添加到类路径,而不是在运行时。您需要库和类路径上的代码。类路径上的条目在Windows上用“;”分隔,在其他所有项目上用“:”分隔。所以试试
-cp。;lib/*
您可以明确地告诉Javac您的lib文件夹。您必须对java命令执行相同的操作,我用java-cp尝试过。;lib/*com/company/main,现在我得到一个错误:找不到或加载main类com.company。main@AlexReds:您是否有名为
com.company.main
的类?提示:案例很重要。我在Windows上使用Intellij终端。正如我在文章中提到的,我可以毫无问题地编译,但是当我运行NoClassDefFoundError时,我得到了一个NoClassDefFoundError。;lib\your-jar-dependency.jar com.company.Main(刚刚添加到答案中)java.lang.ClassNotFoundException:com.mpatric.mp3agic.InvalidDataException