java错误:线程中出现异常;“主要”;java.lang.NoClassDefFoundError
我是一名java初学者,正在学习普林斯顿大学提供的算法课程。在课程中,教授要求我们将algs4.jar下载到一个文件夹中,并将algs4.jar添加到类路径中。[1] 我一步一步地遵循它,并尝试编写一个类似HelloWorld的程序 然而,当我编译文件时,console提醒我java错误:线程中出现异常;“主要”;java.lang.NoClassDefFoundError,java,Java,我是一名java初学者,正在学习普林斯顿大学提供的算法课程。在课程中,教授要求我们将algs4.jar下载到一个文件夹中,并将algs4.jar添加到类路径中。[1] 我一步一步地遵循它,并尝试编写一个类似HelloWorld的程序 然而,当我编译文件时,console提醒我 NPP_EXEC: "java_Compile_Run" NPP_SAVE: G:\java\helloworld\HelloWorld.java javac -encoding UTF-8 "G:\java\hellow
NPP_EXEC: "java_Compile_Run"
NPP_SAVE: G:\java\helloworld\HelloWorld.java
javac -encoding UTF-8 "G:\java\helloworld\HelloWorld.java"
Process started >>>
<<< Process finished. (Exit code 0)
==========编译成功后开始运行==========
java -cp "G:\java\helloworld" "HelloWorld"
Process started >>>
Exception in thread "main" java.lang.NoClassDefFoundError:
edu/princeton/cs/algs4/StdOut
at HelloWorld.main(HelloWorld.java:5)
Caused by: java.lang.ClassNotFoundException: edu.princeton.cs.algs4.StdOut
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
<<< Process finished. (Exit code 1)
================ READY ================
NPP\u EXEC:“java\u编译\u运行”
NPP_保存:G:\java\helloworld\helloworld.java
javac-编码UTF-8“G:\java\helloworld\helloworld.java”
进程已启动>>>
>
线程“main”java.lang.NoClassDefFoundError中出现异常:
edu/princeton/cs/algs4/StdOut
位于HelloWorld.main(HelloWorld.java:5)
原因:java.lang.ClassNotFoundException:edu.princeton.cs.algs4.StdOut
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有一个
如果您引用的jar文件应该位于类路径上,那么必须显式地命名它。例如
java -cp "G:/java/helloworld;G:/whereever/algs4j.jar" HelloWorld
他们真的为System.out
提供了另一个名称吗?在这种情况下,您还可以使用System.out
而不是StdOut
安全地忽略该jar,您可能需要使用-cp
标志来设置类路径以包含包
使用-cp
标志时,不要忘记使用
包含当前工作目录
因此,类似于javac-cpthejar.jar:.
的东西应该在linux或javac-cpthejar.jar;中工作代码>应该适用于windows如果在java代码中导入了类StdOut(import edu.princeton.cs.algs4.StdOut;),则必须告诉java StdOut是如何实现的
根据您提供的链接()。您必须按照“安装教科书库”部分首先安装此库。根据,如果导入了它们的库,您应该使用javac-algs4
进行编译,并使用java-algs4
执行
如果您想知道这两个命令与原始命令javac
和java
之间的区别,您可以
使用键入
命令查找此命令的位置
使用cat
或vim
查看此命令的内容
您可以看到,java-algs4
向原始java
命令添加了-cp
参数,正如Olaf Kock所说。我只是在javac
和java
命令中都包含了类路径参数,如下所示:
javac -classpath ".;drive\path\to\algs4.jar" Hello.java
及
另外,如果要手动添加CLASSPATH环境变量,请记住关闭并重新启动cmd控制台。如何在cmd中编写此语句?谢谢你,就像我在回答中写的那样。您的问题包含java-cp“G:\java\helloworld”“helloworld”
——但是您需要添加jar文件,该文件应该位于类路径和目录中。您没有提到任何开发工具或除javac之外使用的任何其他工具-如果您的问题是不知道如何配置IDE,那么您应该说明您正在使用的IDE,猜测$(当前目录)将被替换,并尝试查看附加jar需要放在哪里。提示:java-cp“$(当前目录);G:/wherever/algs4j.jar”“$(NAME\u PART)”
关闭时,我将把知道jar放在哪里的任务留给您
javac -classpath ".;drive\path\to\algs4.jar" Hello.java
java -classpath ".;drive\path\to\algs4.jar" Hello