或许很多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解决。不明原因,先做下记录。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/a1275302036/article/details/79277196