或许很多java初学者都会用javac、java命令运行程序,运行过几次后就转向开发工具。我本人也是这样,很久没有用命令行去执行java文件了,现在都是用eclipse、intellij idea等编译工具直接编译运行。

昨天开始学习《算法》,里面很多代码都用到了命令行重定向文件实现输入输出,所以昨天用命令去执行class文件时碰到了一个noclassdefounderror异常,网上说的也很杂,看得”一头雾水”,其实还是基础不好,搞清楚原理很多问题就迎刃而解了。

idea编译后java文件和class文件不在同一个目录(后来发现和这没关系)

重新建一些目录测试

然后cmd进入当前目录,javac编译生成class文件,然后复制到out\com\test目录

然后进入该目录(模拟idea目录),java helloworld运行报错

查了很多资料,发现只要在包的上一层目录(src)或者在任意目录添加classpath都可以运行

方法一:

方法二:

终于成功运行了,可以愉快地玩代码了…

知识点:

包是java中为了解决命名冲突而设置的,一个程序写了包和没写在jvm中是两个东西,若没写,默认包,虚拟机会把所有的不写包名的类规整在一起组成默认包,默认包时不需要注意文件包结构

补充:idea 项目编译后没有class文件

问题

idea项目突然无法运行,提示找不到某个类。查看了编译输出目录out,发现没有class文件。

尝试解决

尝试删除out、重新导入项目、在gradle面板点击刷新,都没能解决问题。

问题解决

最后,点击build->rebuild project解决。不明原因,先做下记录。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。如有错误或未考虑完全的地方,望不吝赐教。