有如下程序:
package classes;public class HelloJava
{
public static void main(String[] args)// throws java.io.IOException
{
System.out.println("test");
}
}我如果用jcreator编译的话,会在当前目录下产生一个classes文件夹,并在其中生成类文件。但是,当我用控制台的命令javac HelloJava.java编译它时,却是在当前目录产生类文件,根本没有classes文件夹产生,而且也无法运行生成的类文件,总是报NoClassDefFoundError异常,请张老师帮我解释一下原因可以么?谢谢!
package classes;public class HelloJava
{
public static void main(String[] args)// throws java.io.IOException
{
System.out.println("test");
}
}我如果用jcreator编译的话,会在当前目录下产生一个classes文件夹,并在其中生成类文件。但是,当我用控制台的命令javac HelloJava.java编译它时,却是在当前目录产生类文件,根本没有classes文件夹产生,而且也无法运行生成的类文件,总是报NoClassDefFoundError异常,请张老师帮我解释一下原因可以么?谢谢!
javac就是这么弱
执行的时候要用java classes.HelloJava
javac命令则没有那么复杂,需要你自己手动创建并把源文件放到里面
如没放进文件夹里,路径就不队了,怎么会编译成功呢?
另外,java -. HelloJava.java不起作用,java classes.HelloJava报NoClassDefFoundError异常,进入classes文件夹执行java HelloJava也是报NoClassDefFoundError异常帮帮小弟吧!
java -d ./ 文件名.java
-d是一个命令开关,用来告诉编译器生成包的层次结构,./是告诉编译器生成的结果放在当前目录下.
具体情况,请楼主在命令行里只输入java看看命令功能
而我安装的jcreator却可以运行自如!我哪里设置错了么?请高手执教!
编译:javac -d . HelloJava.java
运行: java classes.HelloJava
javac HelloJava.java ====》这句话和上面那句有什么区别呀,为什么这句就在当前目录产生类文件,而上面那句就在classes文件夹中产生呢?