我创建了一个小HelloWorld示例,我遇到了从命令提示符(在Windows上)运行它的问题。当我试图通过以下方式运行它时:
从命令提示符 java tcpServer 我得到 NoClassDefFoundError
我能够用javac编译它,并生成类文件。
我正在阅读的某个地方,我必须将我的类文件夹的路径放入CLASSPATH环境变量中。我已经完成并重新启动了机器,但我仍然遇到同样的错误。
我也试图通过 java -cp c:\ MyFolderWhereClassFileIs HelloWorld 来运行它,它不起作用。
我查看了ENV变量,我有以下内容: JAVA_HOME:C:\ Program Files(x86)\ Java \ jdk1.6.0_26; JRE_HOME:C:\ Program Files(x86)\ Java \ jre6; CLASSPATH:C:\ HelloWorld;
那么,我该如何运行呢? 任何想法如何解决这个问题?感谢。
PS。对我来说最烦人的是,如果我在eclipse中创建java项目,并创建HelloWorld示例,那么它运行正常......
更新:
这是代码。它确实有指定的包。
package test.com;
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello World");
}
}
我的HelloWorld.java和HelloWorld.class文件在这里: C:\工作空间\ TestApp \ SRC \测试\ COM
到目前为止我学到的一件事是我无法在com文件夹或测试文件夹中运行它。我必须在src文件夹类文件中找到...但我仍然无法运行它...总是出现同样的错误。
答案 0 :(得分:2)
您的班级是否有包裹名称?也就是说,顶部的声明是
package <mypkgname>;
?
如果是这样,那么您必须(A)创建正确的目录结构,(B)在类名前加上{{1}中的包名称}命令。
例如,如果您的Java文件如下所示:
java
然后基本目录结构类似于:
package hello;
public class HelloWorld {
...
}
你的bash命令是:
src/hello/
src/hello/HelloWorld.java
src/hello/HelloWorld.class
否则,如果您的类没有包名,则它将被放置在默认包中。在这种情况下,您只需cd src
java hello.HelloWorld
到您的类文件所在的目录,然后运行cd
。