我如何解决java.lang.ClassNotFoundException?

时间:2012-11-27 04:47:28

标签: java

我正处于java的编程入门级别。我正在写一个简单的代码,涉及投资并在其中添加一个有趣的利率。代码还没有完成,但是我遇到了 java.lang.ClassNotFoundException 错误。由于我是java的新手,我以前还没有遇到过这个问题。我的困惑在于程序将编译。我真的不知道如何处理这个问题。

正如我所说,我不知道从哪里开始,这是错误。

Exception in thread "main" java.lang.NoClassDefFoundError: CDCalc/java
Caused by: java.lang.ClassNotFoundException: CDCalc.java
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

整个代码

    import java.util.Scanner;

public class CDCalc
{
    public static void main(String args[])
        {
            int Count = 0;
            int Investment = 0;
            double Rate = 0;


            Scanner userInput = new Scanner(System.in);

            System.out.println("How much money do you want to invest?");
            int Invest = userInput.nextInt();

            System.out.println("How many years will your term be?");
            double Term = userInput.nextInt();

            System.out.println("Investing: " + Investment);
            System.out.println("     Term: " + Term);

            if (Term <= 1)
            {
            Rate = .3;
            }

            else if (Term <= 2)
            {
            Rate = .45;
            }

            else if (Term <= 3)
            {
            Rate = .95;
            }

            else if (Term <= 4)
            {
            Rate = 1.5;
            }

            else if (Term <= 5)
            {
            Rate = 1.8;
            }

            System.out.println("Total is: " + (Rate * Invest));




        }
}

我非常感谢你提供任何帮助。感谢

修改

我道歉,我应该把它包括在内。代码确实编译得很好,问题在我运行时出现了。当错误出现时,我确实使用了javav CDCalc.java和java CDCalc。更奇怪的是我没有更改任何东西,关闭了终端和我的文本编辑器,删除了保存的文件,重新打开了所有内容,保存了它,编译了它,现在运行正常。我为这篇文章再次道歉,但它似乎已经修好了! -

4 个答案:

答案 0 :(得分:4)

您的代码应该编译好。编译Java文件的方式与执行它们的方式不同。

使用

进行编译
javac CDCalc.java

...并使用

运行它们
java CDCalc

答案 1 :(得分:3)

您似乎尝试将其作为java CDCalc.java运行,但它应该只是java CDCalc

Java命令采用类名(不是文件名),因此没有&#34; .java&#34;最后,没有斜杠或反斜杠,但包名称的点(你的类没有包)。

答案 2 :(得分:1)

这是一个示例:

public class HelloWorldDemo {
 public static void main(String args[]) {
  System.out.println("Hello world test message");
 }
}

这是示例hello world程序,当我使用javac HelloWorldDemo.java命令编译该程序时,编译很好并在当前目录中生成HelloWorldDemo.class,

使用java HelloWorldDemo命令运行此程序后,我收到以下异常。

线程中的异常&#34; main&#34; java.lang.NoClassFoundError:HelloWorldDemo

主线程抛出此错误并异常退出程序。

这个错误的原因是java虚拟机在运行时找不到类文件。 java命令查找当前目录中的类,因此如果您的类文件不在当前目录中,则必须在classpath中设置,因此解决方案是将此.class文件放在类路径中

classpath是指向目录中类文件的每个系统中的环境变量。如果你的classfile在jar文件中,jar应该在classpath中。 classpath可以是绝对路径(完整路径)或相对路径(与目录相关)

解决java.lang.NoClassDefFoundError: -

HelloWorldDemo.class在运行时不可用,因此我们必须使用-classpath选项将类文件设置为java命令

java -classpath。的HelloWorld

这是通过为java命令设置classpath inline来修复NoClassDefFoundError错误。

我们指示jvm通过指定来查找当前目录中的HelloWorldDemo.class。

如果类文件在不同的目录中,我们需要指定完整的目录绝对路径或相对路径而不是。 for java command

  1. 修复了Windows中的java.lang.NoClassDefFoundError: -
  2. 要解决Windows中的NoClassDefFoundError错误,我们必须设置CLASSPATH环境变量。

    要在windows中设置classpath,我们必须配置以下值

    设置CLASSPATH =%CLASSPATH%;。;

    %CLASSPATH%表示要添加的现有类路径。指向当前目录

    设置classpath后, java HelloWorldDemo 命令工作正常并打印hello world消息

答案 3 :(得分:0)

你的程序似乎很好。您是否使用Javac编译了java文件?

您需要执行以下步骤:

  1. 使用.java

    编译javac文件(源代码)
     javac CDCalc.java
    

    这应该创建一个名为CDCalc.class

  2. 的类文件
  3. 使用java

    执行已编译的类文件
     java CDCalc