这是一个我抄的命令行程序,编译没有问题,但运行时又出现了这个错误:
java.lang.NoClassDefFoundError: book/basic/CommandArgs
Caused by: java.lang.ClassNotFoundException: book.basic.CommandArgs
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: book.basic.CommandArgs. Program will exit.
Exception in thread "main"
文件存在E:\Java_project CLASSPATH路径设置如下:.;D:\Sun\AppServer\jdk\lib\dt.jar;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\lib\j2ee.jar;D:\tomcat\bin;E:\Java_project;//文件名:CommandArgs.java
package book.basic;public class CommandArgs
{
public static void error1(String errmsg)
{
System.err.println(errmsg);
System.exit(1);
}
public static void main(String[] args)
{
String usageMsg="Usage: CommandArgs[options]\n"
+"Where [options] are:\n"
+"-help 显示帮助信息\n"
+"-n<name> 设置参数的名字\n"
+"-v<value> 设置参数的值\n";
String name=null;
String value=null; for (int i=0;i<args.length;i++)
{
if(args[i].equals("-n"))
{
if((i+1)==args.length)
{
error1 ("Error: -n requires an argument.");
}
name=args[++i];
}
else if(args[i].equals("-v"))
{
if((i+1)==args.length)
{
error1("Error: -v requires an argument.");
}
value=args[++i];
}
else if (args[i].equalsIgnoreCase("-help"))
{
System.out.println(usageMsg);
System.exit(0);
}
else
{
error1("Error: argument not recognzied:"+args[i]);
}
System.out.println("name: "+name+"; value:"+value);
}
}
}
java.lang.NoClassDefFoundError: book/basic/CommandArgs
Caused by: java.lang.ClassNotFoundException: book.basic.CommandArgs
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: book.basic.CommandArgs. Program will exit.
Exception in thread "main"
文件存在E:\Java_project CLASSPATH路径设置如下:.;D:\Sun\AppServer\jdk\lib\dt.jar;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\lib\j2ee.jar;D:\tomcat\bin;E:\Java_project;//文件名:CommandArgs.java
package book.basic;public class CommandArgs
{
public static void error1(String errmsg)
{
System.err.println(errmsg);
System.exit(1);
}
public static void main(String[] args)
{
String usageMsg="Usage: CommandArgs[options]\n"
+"Where [options] are:\n"
+"-help 显示帮助信息\n"
+"-n<name> 设置参数的名字\n"
+"-v<value> 设置参数的值\n";
String name=null;
String value=null; for (int i=0;i<args.length;i++)
{
if(args[i].equals("-n"))
{
if((i+1)==args.length)
{
error1 ("Error: -n requires an argument.");
}
name=args[++i];
}
else if(args[i].equals("-v"))
{
if((i+1)==args.length)
{
error1("Error: -v requires an argument.");
}
value=args[++i];
}
else if (args[i].equalsIgnoreCase("-help"))
{
System.out.println(usageMsg);
System.exit(0);
}
else
{
error1("Error: argument not recognzied:"+args[i]);
}
System.out.println("name: "+name+"; value:"+value);
}
}
}
楼主【JAVA_mentu】截止到2008-07-17 18:16:32的历史汇总数据(不包括此帖):
发帖的总数量:8 发帖的总分数:150 每贴平均分数:18
回帖的总数量:30 得分贴总数量:10 回帖的得分率:33%
结贴的总数量:8 结贴的总分数:150
无满意结贴数:1 无满意结贴分:20
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:12.50 % 无满意结分率:13.33 %
敬礼!
在命令行下面这样编译
javac -d . CommandArgs.java这样运行
java book.basic.CommandArgs
的确是,以前问过你同一个问题,不过设置好CLASSPATH路径就没事了。现在又要这样编译,感觉很奇怪。
在我的系统上没有问题。也不用使用java -d .等操作。
我是这样设定的,有.;啊文件存在E:\Java_project CLASSPATH路径设置如下:.;D:\Sun\AppServer\jdk\lib\dt.jar;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\lib\j2ee.jar;D:\tomcat\bin;E:\Java_project;
.;D:\Sun\AppServer\jdk\lib\dt.jar;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\lib\j2ee.jar;D:\tomcat\bin;E:\Java_project;
这个无所谓了,问题解决了就好。