当Netbeans正确运行同一程序时,无法从CLI运行java程序

当Netbeans正确运行同一程序时,无法从CLI运行java程序,java,netbeans,Java,Netbeans,以下程序在Netbeans IDE中运行良好,但当我尝试从命令提示符下运行时 Exception in thread "main" java.lang.NoClassDefFoundError: Gcd (wrong name: algo rithms/Gcd) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source)

以下程序在Netbeans IDE中运行良好,但当我尝试从命令提示符下运行时

Exception in thread "main" java.lang.NoClassDefFoundError: Gcd (wrong name: algo
rithms/Gcd)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    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)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

package algorithms;

public class Gcd {

public static int ComputeGcd(int number1, int number2){
    if(number2 == 0){ return number1;}
    else{
         int remainder = number1 % number2;
         return ComputeGcd(number2,remainder);
    }
}


public static void main(String[] args) {

    int a = 32;
    int b = 12;
    System.out.println(ComputeGcd(a,b));

} 

}

您可能需要查看Netbeans为Java提供了哪些CLI命令没有提供的类路径


如果不使用软件包,请尝试删除
软件包
调用,因为这可能会导致复杂性

您可能需要查看Netbeans为Java提供了哪些CLI命令没有提供的类路径


如果不使用软件包,请尝试删除
软件包
调用,因为这可能会导致复杂性

将两个级别移动到src之上,然后执行java算法。Gcd

将两个级别移动到src之上,然后执行java算法。Gcd

您应该在
src
目录中,运行以下命令:

...\src> javac algorithms\Gcd.java
...\src> java algorithms.Gcd
(您不必从该目录编译,但我建议您这样做。)


java
命令采用完全限定的类名,其中包括包名。

您应该在
src
目录中运行以下命令:

...\src> javac algorithms\Gcd.java
...\src> java algorithms.Gcd
(您不必从该目录编译,但我建议您这样做。)


java
命令采用完全限定的类名,其中包括包名。

您是否已为
算法创建了目录
,请尝试通过注释
包算法来运行程序,它将起作用……一旦确定,您可以使用

javac algorithms.Gcd.java; 
java algorithms.Gcd` 

正如@JonSkeet所提到的,您可以了解有关包结构的更多信息,

您是否已为
算法创建了目录,请尝试通过注释
包算法来运行该程序,
,它将起作用……一旦确定,您可以使用

javac algorithms.Gcd.java; 
java algorithms.Gcd` 

正如@JonSkeet所提到的,您可以了解有关包结构的更多信息,

,并确保在执行soUsing后使用默认包不是合适的答案。这是一种不好的做法,应该避免——正确的方法是知道如何正确使用软件包。+1@JonSkeet,我完全同意你的观点,但你不认为有时候即使是最好的做法也是最复杂的。。。然而,必须尽可能地使用I包,但同时过多使用会增加复杂性。。。。需要你的意见吗?我知道你是问这个问题的合适人选?@rahul:我只在默认包中为一次性测试代码编写类。我不知道你说的“太多使用”是什么意思。这里我并不是在暗示无关的复杂性——只是代码中已经存在的结构,它是完全合理的。明白了。。我也是良好编码实践的坚定支持者,事实上,麦康奈尔的《代码完整》是我一直最喜欢的文本。。我真的同意你的想法,可能是我的问题的答案过于具体的项目场景。感谢您的回复,请确保您在执行soUsing操作后,
javac
,这里的默认包不是合适的答案。这是一种不好的做法,应该避免——正确的方法是知道如何正确使用软件包。+1@JonSkeet,我完全同意你的观点,但你不认为有时候即使是最好的做法也是最复杂的。。。然而,必须尽可能地使用I包,但同时过多使用会增加复杂性。。。。需要你的意见吗?我知道你是问这个问题的合适人选?@rahul:我只在默认包中为一次性测试代码编写类。我不知道你说的“太多使用”是什么意思。这里我并不是在暗示无关的复杂性——只是代码中已经存在的结构,它是完全合理的。明白了。。我也是良好编码实践的坚定支持者,事实上,麦康奈尔的《代码完整》是我一直最喜欢的文本。。我真的同意你的想法,可能是我的问题的答案过于具体的项目场景。谢谢你的回复