1. 今天在学习中,使用IDEA中编写了一个HelloWorld.java的程序,如下:
package com.runoob.www;
/**
* @author
* @version 1.0
* @date 2021年08月16日 16:10
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2. 在IDEA中可以正常运行,并且正确输出Hello World,如下:
3. 通过IDEA右击open in Termnal打开命令窗口,使用用javac命令编译HelloWorld.java文件时,报错错误:编码GBK的不可映射字符,报错如下:
4. 检查了下,发现HelloWorld.java文件用的都是UTF-8编码,从报错可以看出是因为Java默认编码格式是GBK,所有可以 通过修改编码格式为GBK解决,如下:
如上图所示:直接右下角编码格式修改为GBK,在进行编译,如下:
从图可以看出,编译没问题了,但是java HelloWorld运行报错:错误: 找不到或无法加载主类 HelloWorld,这个问题后面给出解决办法。
6. 因为在大多数项目中都是使用UTF-8格式,所有这种方法显然不是很好,所有又有了第二个方法,继续使用UTF-8格式,使用命令:javac -encoding UTF-8 HelloWorld.java 运行,如下:
从图可以看出,编译没问题了,但是java HelloWorld运行报错:错误: 找不到或无法加载主类 HelloWorld,和上面出现了类似的问题。
7. 于是,我们再解决java运行错误:找不到或无法加载主类 HelloWorld,通过查找发现问题真正的原因是IDEA中项目java源代码都会使用package指定包路径,因为我们的类中含有了包路径package com.runoob.www,所以我们需要将javac编译生成class文件放入package指定的目录结构中。
javac -d . -encoding UTF-8 HelloWorld.java // -d表示生成package指定的目录结构 .表示生成的目录结构保存在当前目录
java com.runoob.www.HelloWorld // 执行package指定的目录结构中的程序
运行如下:
至此,我遇到的命令行编译问题全部解决完毕,记录一下小白学习之路,还请大神指教勿喷。