-1

我处于使用 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,这就是错误出现的时候。更奇怪的是我没有改变任何东西,关闭了终端和我的文本编辑器,删除了保存的文件,重新打开所有内容,保存它,编译它,它现在运行良好。我再次为这篇文章道歉,但它似乎已经修复了!——</p>

4

4 回答 4

4

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

你编译

javac CDCalc.java

...并运行它们

java CDCalc
于 2012-11-27T04:50:13.997 回答
3

看起来你试图运行它java CDCalc.java,但它应该只是java CDCalc.

Java 命令采用类名(不是文件名),因此末尾没有“.java”,包名没有斜杠或反斜杠,而是点(您的类没有包)。

于 2012-11-27T04:50:03.983 回答
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 命令运行此程序后,我收到以下异常。

线程“主”java.lang.NoClassFoundError 中的异常:HelloWorldDemo

thread main 抛出此错误并异常退出程序。

这个错误的原因是java虚拟机在运行时找不到类文件。java命令查找当前目录下的类,所以如果你的class文件不在当前目录下,你必须在classpath中设置,所以解决方法是把这个.class文件放在classpath下

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

解决 java.lang.NoClassDefFoundError :-

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

java -类路径。你好世界

这是为了通过为 java 命令设置类路径内联来修复 NoClassDefFoundError 错误。

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

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

  1. 修复 windows 中的 java.lang.NoClassDefFoundError:-

要解决 windows 中的 NoClassDefFoundError 错误,我们必须设置 CLASSPATH 环境变量。

要在 Windows 中设置类路径,我们必须配置以下值

设置 CLASSPATH=%CLASSPATH%;.;

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

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

于 2012-11-27T04:54:18.577 回答
0

你的程序看起来不错。您是否使用编译过您的 java 文件Javac

您需要执行以下步骤:

  1. 使用编译.java文件(源代码)javac

     javac CDCalc.java
    

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

  2. 使用执行编译的类文件java

     java CDCalc
    
于 2012-11-27T04:50:34.083 回答