【问题标题】:Compiling and running a java program in command prompt在命令提示符下编译和运行 java 程序
【发布时间】:2014-02-27 04:45:06
【问题描述】:

我写了一个简单的hello world程序,下面给出

package helloworld;

public class helloWorld 
{
    public static void main(String[] args)
    {
        System.out.println("Hello, World!");
    }
}

我使用的是 Windows 7,并已将环境变量窗口中的 CLASSPATH 和 PATH 变量设置为

C:\Program Files\Java\jdk1.6.0_24\bin;

程序位于

C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\helloWorld

所以,基本上当我尝试在命令提示符下运行它时,会发生以下情况

C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\helloWorld>javachelloWorld.java

C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\helloWorld>java helloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: helloWorld (wrong name: helloworld/helloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: helloWorld.  Program will exit.

该程序似乎可以正常编译并且没有抛出任何错误。但是当我尝试运行它时,它说发生了异常。 我尝试在 Google 上查找,认为设置我的 PATH 和 CLASSPATH 是错误的,但我似乎没有发现任何问题。

【问题讨论】:

  • 你定义了任何包吗?
  • @Kakarot 是的,我有。抱歉,现在已编辑问题。

标签: java path compilation classpath command-prompt


【解决方案1】:

如果你的 helloWorld.java 文件在一个包中,你可以如下运行:

C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\
java packageName.helloWorld

从 helloworld 包目录之外运行代码,即从 src 目录 (C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src)

还要检查你的java文件的名字是否和你的类名(helloWorld.java)一样

你的包的名字似乎是helloworld(都是小写字母)但是文件夹名称是helloWorld(注意W是大写的)两个名字都需要匹配。

【讨论】:

  • 谢谢。我刚试了一下。但是它抛出了同样的异常
  • 尝试从 helloworld 包目录中运行代码
  • 查看java文件名是否与class文件相同?
  • 是的,两者都命名为 helloWorld。 helloWorld.java 和 helloWorld.class 都存在于 C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\helloWorld
  • 您是否尝试从 helloWorld 文件夹或 src 文件夹运行代码
【解决方案2】:

当你发出命令时,你需要确保你在包含你的 helloWorld.class 文件的目录中

java helloWorld

【讨论】:

  • 是的,我将我的 CLASSPATH 重置为我的 helloWorld.class 所在的导演。尝试再次运行它。仍然抛出相同的异常。
  • 我的意思是在命令提示符下使用 cd 和 cd..。在发出 java 命令之前导航到保存 helloWorld.class 文件的目录
  • helloWorld.class 文件已经在编译时创建在同一文件夹中 C:\Users\Admin\Documents\NetBeansProjects\javaAssignment\src\helloWorld 所以,我不需要更改目录,对吧?
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2013-03-28
相关资源
最近更新 更多