Java 如何解决ClassNotFoundException?
我正在尝试运行Java应用程序,但出现以下错误:Java 如何解决ClassNotFoundException?,java,class,classpath,classnotfoundexception,Java,Class,Classpath,Classnotfoundexception,我正在尝试运行Java应用程序,但出现以下错误: java.lang.ClassNotFoundException: 冒号之后是缺少的类的位置。但是,我知道该位置不存在,因为该类位于其他位置。如何更新该类的路径?它与类路径有关吗?如果您知道类的路径或包含类的jar,则在运行它时将其添加到类路径中。您可以使用此处提到的类路径: 在窗户上 java -classpath .;yourjar.jar YourMainClass 在UNIX/Linux上 java -classpath .:yourj
java.lang.ClassNotFoundException:
冒号之后是缺少的类的位置。但是,我知道该位置不存在,因为该类位于其他位置。如何更新该类的路径?它与类路径有关吗?如果您知道类的路径或包含类的jar,则在运行它时将其添加到类路径中。您可以使用此处提到的类路径: 在窗户上
java -classpath .;yourjar.jar YourMainClass
在UNIX/Linux上
java -classpath .:yourjar.jar YourMainClass
如果您知道类的路径或包含该类的jar,那么在运行它时将其添加到您的类路径中。您可以使用此处提到的类路径: 在窗户上
java -classpath .;yourjar.jar YourMainClass
在UNIX/Linux上
java -classpath .:yourjar.jar YourMainClass
您的类路径被破坏(这是Java世界中非常常见的问题)
根据启动应用程序的方式,您需要将参数修改为-cp
、MANIFEST.MF中的类路径条目或磁盘布局。您的类路径被破坏(这是Java世界中非常常见的问题)
根据启动应用程序的方式,需要将参数修改为
-cp
、MANIFEST.MF中的类路径条目或磁盘布局。转到顶部,删除导入语句(如果有),然后重新导入类。但如果不是这样的话,那么就做一个干净的构建。您使用的是Netbeans还是Eclipse?转到顶部,删除导入语句(如果有),然后重新导入该类。但如果不是这样的话,那么就做一个干净的构建。您使用的是Netbeans还是Eclipse?要通过命令行将类的位置添加到类路径中,只需在运行类时添加-cp
或-classpath
和类的位置即可。即
java -cp "c:/location/of/file" YourProgram
或者,如果您正在运行eclipse之类的IDE,您可以右键单击项目->构建路径->配置构建路径
然后将包含类的外部JAR添加到构建路径中,这样就可以正常工作。要通过命令行将类的位置添加到类路径中,只需在运行时添加
-cp
或-classpath
和类的位置。即
java -cp "c:/location/of/file" YourProgram
或者,如果您正在运行eclipse之类的IDE,您可以右键单击项目->构建路径->配置构建路径
并将包含类的外部JAR添加到构建路径中,那么它应该可以正常工作。类路径是从中加载类的位置列表 这些“位置”可以是目录,也可以是jar文件 对于目录,JVM将遵循加载类的预期模式。如果我的类路径中有目录C:/myproject/classes,并且我尝试加载一个类com.mycompany.Foo,它将在classes目录下查找名为com的目录,然后在该目录下查找名为mycompany的目录,最后,它将在该目录中查找名为Foo.class的文件 在第二个实例中,对于jar文件,它将在jar文件中搜索该类。jar文件实际上只是一个压缩的目录集合,如上所述。如果您解压缩一个jar文件,您将得到一堆遵循上述模式的目录和类文件 因此,当JVM尝试加载类定义时,它会从头到尾遍历类路径以查找类的定义。例如,在类路径中: C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar JVM将首先尝试查找目录classes,然后查找stuff.jar,最后查找otherstuff.jar 当您得到ClassNotFoundException时,这意味着JVM已经遍历了整个类路径,没有找到您试图引用的类。正如Java世界中经常出现的那样,解决方案是检查类路径
您可以在命令行上定义一个类路径,方法是说java-cp,然后是您的类路径。在Eclipse之类的IDE中,您将有一个菜单选项来指定类路径。类路径是从中加载类的位置列表 这些“位置”可以是目录,也可以是jar文件 对于目录,JVM将遵循加载类的预期模式。如果我的类路径中有目录C:/myproject/classes,并且我尝试加载一个类com.mycompany.Foo,它将在classes目录下查找名为com的目录,然后在该目录下查找名为mycompany的目录,最后,它将在该目录中查找名为Foo.class的文件 在第二个实例中,对于jar文件,它将在jar文件中搜索该类。jar文件实际上只是一个压缩的目录集合,如上所述。如果您解压缩一个jar文件,您将得到一堆遵循上述模式的目录和类文件 因此,当JVM尝试加载类定义时,它会从头到尾遍历类路径以查找类的定义。例如,在类路径中: C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar JVM将首先尝试查找目录classes,然后查找stuff.jar,最后查找otherstuff.jar 当您得到ClassNotFoundException时,这意味着JVM已经遍历了整个类路径,没有找到您试图引用的类。正如Java世界中经常出现的那样,解决方案是检查类路径
您可以在命令行上定义一个类路径,方法是说java-cp,然后是您的类路径。在Eclipse这样的IDE中,您将有一个菜单选项来指定类路径。我也遇到了这个问题,并尝试了al
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.0</version>
<executions>
<!-- Attach the shade goal into the package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>