cmd下java程序编译能通过但是运行不了出异常

wcl130123 2014-09-08 04:51:23
package wcl;

import java.io.File;
import java.io.IOException;

public class TestFile {
public static void main(String[] args){
File dir = new File("."+File.separator+"demo");
if(!dir.exists()){
dir.mkdirs();
}
File file = new File(dir,"demo.text");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
}
}
此程序在C盘下 wcl文件夹内
这个程序在Myeclipse里运行正常
但是在cmd下编译通过运行不了出异常:
C:\>cd wcl

C:\wcl>javac TestFile.java

C:\wcl>java TestFile
Exception in thread "main" java.lang.NoClassDefFoundError: TestFile (wrong name:
wcl/TestFile)
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)
检查过环境变量配置。在cmd上输入java -version , java ,javac 命令 都是正常的
实在是找不到解决问题的方法 求救!
...全文
371 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcl130123 2014-09-08
  • 打赏
  • 举报
回复
引用 9 楼 magi1201 的回复:
[quote=引用 8 楼 wcl130123 的回复:] 我现在很迷糊,我是初学者,我现在想知道怎么做才能运行此程序,为什么在Myeclipse上能运行,在cmd上就不行, C:\>javac wcl\TestFile.java C:\>java wcl\TestFile Exception in thread "main" java.lang.NoClassDefFoundError: wcl\TestFile (wrong n ame: wcl/TestFile) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 我太笨了 ,理解不了,不知道该怎么做。。
不必太纠结这个,在eclipse,或者MyEclipse可以运行的程序就可以了 在cmd上面运行不了,主要是环境变量设置的问题,找不到classpath 中的引用类造成的 你的类可以按照我在3楼的方式去执行下,应该可以的 javac 时,包目录间用 / 分隔开 java 时,用 . 分隔[/quote] 恩 ,可以运行了,谢谢,我现在自学一些知识想找份java web开发方面的工作,有时候感觉自己坚持不下去学习,生活压力大,不知道怎么做,坚持吧,呵说多了
姜小白- 2014-09-08
  • 打赏
  • 举报
回复
引用 8 楼 wcl130123 的回复:
我现在很迷糊,我是初学者,我现在想知道怎么做才能运行此程序,为什么在Myeclipse上能运行,在cmd上就不行, C:\>javac wcl\TestFile.java C:\>java wcl\TestFile Exception in thread "main" java.lang.NoClassDefFoundError: wcl\TestFile (wrong n ame: wcl/TestFile) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 我太笨了 ,理解不了,不知道该怎么做。。
不必太纠结这个,在eclipse,或者MyEclipse可以运行的程序就可以了 在cmd上面运行不了,主要是环境变量设置的问题,找不到classpath 中的引用类造成的 你的类可以按照我在3楼的方式去执行下,应该可以的 javac 时,包目录间用 / 分隔开 java 时,用 . 分隔
wcl130123 2014-09-08
  • 打赏
  • 举报
回复
引用 7 楼 magi1201 的回复:
java环境变量配置 搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,所以如果喜欢盘根究底的朋友不妨研究一下LINUX
我现在很迷糊,我是初学者,我现在想知道怎么做才能运行此程序,为什么在Myeclipse上能运行,在cmd上就不行, C:\>javac wcl\TestFile.java C:\>java wcl\TestFile Exception in thread "main" java.lang.NoClassDefFoundError: wcl\TestFile (wrong n ame: wcl/TestFile) 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) 我太笨了 ,理解不了,不知道该怎么做。。
姜小白- 2014-09-08
  • 打赏
  • 举报
回复
java环境变量配置 搜索CLASS时先查找当前目录的CLASS文件——为什么这样搞,这是由于LINUX的安全机制引起的,LINUX用户很明白,WINDOWS用户就很难理解(因为WINDOWS默认的搜索顺序是先搜索当前目录的,再搜索系统目录的,再搜索PATH环境变量设定的) ,所以如果喜欢盘根究底的朋友不妨研究一下LINUX
wcl130123 2014-09-08
  • 打赏
  • 举报
回复
引用 3 楼 magi1201 的回复:
java代码中有package的时候,在package外执行命名 同时,将classpath中添加当前目录. 进去

package package1;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Halo");
	}
}
”将classpath中添加当前目录. 进去“这句话是什么意思?我在包外边执行了一遍还是不行,我的环境变量你看一下 JAVA_HOME D:\Java\jdk1.7.0_67 CLASS_PATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar Path C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;D:\IsoBuster;.;%JAVA_HOME%\bin;
skyWalker_ONLY 2014-09-08
  • 打赏
  • 举报
回复
编译时使用javac 包名/类名.java,执行时使用java 包名.类名,不需要指定classpath .,可以参考http://blog.csdn.net/skywalker_only/article/details/38518265
锦瑟six 2014-09-08
  • 打赏
  • 举报
回复
你必须到wcl目录的上层目录里去执行javac命令,在package所在的目录下找不到的
姜小白- 2014-09-08
  • 打赏
  • 举报
回复
java代码中有package的时候,在package外执行命名
同时,将classpath中添加当前目录. 进去

package package1;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Halo");
}
}


rumlee 2014-09-08
  • 打赏
  • 举报
回复
应该是classpath的设置问题,在classpath中加入.
致知Fighting 2014-09-08
  • 打赏
  • 举报
回复
C:\wcl>里有没有编译后生成的class?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧