我是java的初学者,我正在使用eclipse(如果它是相关的)。 我最近尝试使用外部Jar(Std),并且无论我做什么,每次尝试运行我的程序时都会出现以下错误。 错误:
`Exception in thread "main" java.lang.NoClassDefFoundError: StdOut
at LocalMaxFinder.main(LocalMaxFinder.java:11)
Caused by: java.lang.ClassNotFoundException: StdOut
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
`
我尝试运行的最小代码向我显示错误是:
import libraries.*;
public class Test {
public static void main (String[]args) {
StdOut.print("Enter Integer");
int x= StdIn.readInt ();
}
}
非常感谢您提供任何帮助。
答案 0 :(得分:0)
这是因为您没有运行当前正在查看的项目。
根据您的堆栈跟踪,问题源于当前项目中不存在的方法max()
右键单击文件test.java并选择run as java application。
您的运行菜单很可能是以前项目的Hassan旧条目。
答案 1 :(得分:0)
错误是抱怨在LocalMaxFinder中引用的类 StdOut,在第11行>的main()方法中引用。>
我没有看到实际库类的源代码,但我的猜测是包名不正确。 Java(按照惯例)使用命名方案来镜像类文件的目录结构,而不是包含它们的实际jar文件的名称。假设jar文件在类路径上,那部分是无关紧要的。
要理解我在详细描述的内容,最好下载一些开源代码,例如从Apache下载,然后查看.java文件中源代码顶部的文件夹结构和行。声明包。例如,如果它是'package com.foo.bar.baz',它将在com / foo / bar / baz的源文件夹中。如果包名不正确,它将给你这个误导性错误,无法找到该类。
你有这些类的源代码吗?
如果没有,jdk中包含一个名为javap的命令行实用程序应该可以提供帮助。