爪哇语;“线程中的异常”;“主要”;java.lang.NoClassDefFoundError“;
我以前也遇到过这个错误,但这让我很困惑,因为现在显然是出于不同的原因,因为我正在做我上次做的事情来避免它。我真的被这件事缠住了,根本不知道该怎么办。这只是我拥有的主类的一个tester类,但这就是发生错误的地方爪哇语;“线程中的异常”;“主要”;java.lang.NoClassDefFoundError“;,java,Java,我以前也遇到过这个错误,但这让我很困惑,因为现在显然是出于不同的原因,因为我正在做我上次做的事情来避免它。我真的被这件事缠住了,根本不知道该怎么办。这只是我拥有的主类的一个tester类,但这就是发生错误的地方 // test class for "CelciusAndFahrenheit" import java.io.*; class CelCiusAndFahrenhetTester { public static void main(String[] args) thro
// test class for "CelciusAndFahrenheit"
import java.io.*;
class CelCiusAndFahrenhetTester
{
public static void main(String[] args) throws IOException
{
//Making Input and reading to variable
String inInput;
InputStreamReader inStream = new InputStreamReader (System.in);
BufferedReader reader = new BufferedReader (inStream);
System.out.println ("Please state which temperature type you are converting to");
inInput = reader.readLine();
if (inInput != "Celcius")
{
System.out.println ("What is the temperature amount you wish to convert?");
inInput = reader.readLine();
CelciusAndFahrenheit temperatureF = new CelciusAndFahrenheit();
double answer = Double.parseDouble(inInput);
temperatureF.setFahrenheit(answer);
temperatureF.tFah();
}
else
{
System.out.println ("What is the temperature amount you wish to convert?");
inInput = reader.readLine();
CelciusAndFahrenheit temperatureC = new CelciusAndFahrenheit();
double answer = Double.parseDouble(inInput);
temperatureC.setCelcius(answer);
temperatureC.tCel();
}
}
}
编辑;
我不会说谎。我不知道这件事。那个教我Java的家伙让他的班级使用记事本和CMD来运行我们的程序,坦白说,我只是迷路了。为了回答其中一些问题,下面是另一个程序
import java.io.*;
// blueprint for "CelciusAndFahrenheit" class
class CelciusAndFahrenheit
{
// declare instance variable as private
private double fahrenheit;
private double celcius;
// declare getter method public
public double getFahrenheit()
{
return fahrenheit;
}
// declare setter method public
public void setFahrenheit(double tempF)
{
fahrenheit = tempF;
tempF = (9.0 / 5.0) * celcius + 32;
}
// declare getter method public
public double getCelcius()
{
return celcius;
}
// declare setter method public
public void setCelcius(double tempC)
{
celcius = tempC;
tempC = (5.0 / 9.0) * (fahrenheit - 32);
}
public void tFah()
{
System.out.println ("The temperature you've inputted in Fahrenheit is " + fahrenheit + ".");
}
public void tCel()
{
System.out.println ("The temperature you've inputted in Celcius is "+ celcius + ".");
}
}
再次尝试清理和构建项目。既然您正在学习,我将看看是否可以帮助您。我们不能真正帮助你很多,因为我们没有完整的错误。但是,NoClassDefFoundError意味着发生了非常具体的事情。但我们需要知道它找不到什么特定的类。NoClassDefFoundError将告诉您它找不到的类 当编译Java源文件(即以.Java结尾的文件)时,Java编译器(ie javac)将编译后的版本创建为类文件(即以.class结尾的文件)。JVM(ie java)执行.class文件中的代码。编译Java文件时,需要源代码(即.Java文件)或(.class文件),以便编译器解析所有依赖项 例如,在您的程序中,CelciusAndFarenhetTester类依赖于CelciusAndFahrenheit类,因为CelciusAndFahrenheit在CelciusAndFarenhetTester的源中使用。当javac编译celciusandfarenheitester时,它需要CelciusAndFahrenheit的类文件,否则它会抱怨。在您的案例中,javac没有抱怨,这意味着它可以找到CelciusAndFarenhetTester和CelciusAndFahrenheit。这也意味着javac应该已经生成了两个类文件。一个用于CelciusAndFahrenheit,一个用于CelciusAndFarenhetTester。通常,这些文件会写入到与源文件不同的目录中。要控制这些文件的写入位置,可以在javac上设置构建路径。例如:
javac -d bin src\*.java
这将编译src目录下的每个java源文件,并将类文件写入bin目录。如果您查看bin目录,您将看到.class文件
当您得到NoClassDefFoundError时,这意味着当它编译该类时,它找到了所有依赖项。但是,当您运行它时,java找不到所需的一个或多个类文件。Java在类路径上查找类文件。如果程序找不到类,那是因为它不在类路径上。因此,如果我们想运行我在上面创建的类文件,我会执行以下操作:
java -cp bin CelciusAndFarenhetTester
-cp选项设置类路径。您可以指定任意数量的目录,将它们与您的平台使用的任何内容分开(;windows,:*/unix平台)。您只需要包含包或类文件的顶级目录。不直接在点上,但决不使用
==
或测试字符串相等性=代码>。您如何调用此程序?您的类路径可能设置错误,或者您位于错误的目录中。本技术说明讨论了该主题:确保也添加异常跟踪,以便在运行程序时可以知道classpath
中缺少哪个库。找不到哪个类?上次你做了什么?您用来调用程序的命令行是什么?类路径设置为什么?