编译及运行错误

一、编译及运行出错

在一次作业中,将java文件上传至Linux服务器,使用javac命令进行编译,之后用java命令运行编译文件,出现找不到主类,之后想在本地使用命令行运行查找问题,结果直接编译出错,故写下该篇文章记录问题。

1. 运行出错

运行出错

java程序在Linux运行错误原因:java文件中带有包名,编译后的class文件应该放在该包下,使用以下命令运行。

1
java 包名.类名

2. 编译出错

image-20221116205933493

  1. Java程序在编译的时候,需要使用JDK开发工具包中的JAVAC.EXE命令,而JDK开发工具包是国际版的,默认是对Unicode的编码格式的源文件进行编译操作。
  2. 因此其他编码格式的源文件需要先转为Unicode格式才能够进行编译。
  3. 在未指定源程序文件的编码格式的情况下,JDK会优先获取操作系统的file.encoding参数,然后JDK就把我们的JAVA源程序从file.encoding编码格式转化为JAVA内部默认的Unicode格式放到内存中。
  4. 如果源文件的编码格式不是file.encoding,就会出现乱码-不能够正确对应的中文而报错。
  5. javac把转换后的Unicode格式的文件进行编译成class类文件,此时.class文件是Unicode编码的,它暂放在内存中。之后,JDK将此以Unicode编码编译后的.class文件保存到操作系统中形成我们见到的.class文件。

解决方法

  1. 将java文件以ASCII编码格式保存
  2. 使用以下命令进行java程序的编译
1
javac -encoding UTF-8 文件名.java

参考文章

解析java程序编译时编码GBK的不可映射字符的错误


编译及运行错误
https://pursuemilk.github.io/2022/11/16/编译及运行错误/
作者
PursueMilk
发布于
2022年11月16日
许可协议