在命令行窗口执行javac命令编译java文件报错“编码gbk的不可映射字符“

二木成林      2022-05-11     701

关键词:

异常

在 DOS 窗口执行 javac 命令编译 .java 文件报错:编码GBK的不可映射字符
其中 Test.java 文件的内容如下:

public class Test 
	public static void main(String[] args)
		// 测试类
		System.out.println("hello world");
	

原因

.java 文件中含有中文字符。而该 Test.java 文件的文件编码是 UTF-8。
而 DOS 窗口的编码格式是 GBK,未指定正确的编码进行编译,所以报错。

解决

使用 javac 命令的 -encoding 选项指定文件编码格式。即:

javac -encoding UTF-8 文件名.java


关于 javac 命令的一些选项说明如下:

D:\temp>javac -help
用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:lines,vars,source     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:none,only          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:none,class     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名

错误记录记录android命令行执行java程序中出现的错误(dx打包pc可执行文件报错|dalvik命令执行kotlin编译的dex文件报错)(代码片段)

文章目录前言一、Android命令行与PC可执行JAR文件不兼容二、Android命令行使用dalvik命令不能直接执行Kotlin编译的dex文件前言尝试在Android系统中执行Java程序,【开发环境】Android命令行中执行Java程序(IntelliJIDEA中创建Java/Kotlin工程|dx打... 查看详情

如何用javac和java编译运行整个java工程

...如D盘)2、进入控制台(window+R键---->输入cmd)3、键入命令D: 回车4、进入D盘之后键入命令:javacDemo.java(要保证你的jdk是安装好的)5、如果没报错,即编译完成,可执行,键入命令:javaDemo(回车)以上完成整个在控制台运行java... 查看详情

java基础知识起步

...名为.java文件----打开cmd---进入文件所在文件路径如f:----在命令窗口执行javac文件名.java--执行命令:java文件名 包名小写,类名首字母大写,类名可.java文件名要完全一致,是 注意不是/用javac文件.java命令编译,后用java 类... 查看详情

java基础2----第一个程序helloworld(代码片段)

文章目录引言创建文件编写代码运行程序在命令行运行程序在IDE中运行程序程序解读总结引言几乎所有的编程语言都是从helloworld开始的。本次java的学习也是不例外的。这篇文章将展示helloword实现中java都做了什么工作创建文件所... 查看详情

java中布尔类型的运用,flag的问题

...别代表布尔逻辑中的“真”和“假”。2、输出boolean值到命令行窗口,在D盘Java目录下,新建“BooleanSample.java”文件。用记事本打开“BooleanSample.java”文件,输入以下代码。3、输出boolean值到命令行窗口,用记事本打开D盘Java目录... 查看详情

java命令行从编译到打jar包到执行

 整个过程模拟Eclipse的JavaProject项目,包括src,以及生成的.class文件在bin中,还可能有lib,包含额外的jar包。一.javac编译1.没有额外的jar包1)准备工作我们新建JavaProject,该项目结构如下:bin:必须新建一个空的bin文件,用于... 查看详情

包(package)

...立文件夹。类名的全称是:包名.类名 javac xx.java命令编译的时候,不会建立对应的文件夹,建立包对应的文件夹的命令,要用javac-d.xx.java 会在当前路径下建立对应的文件夹 .是指命令行窗口的当前路径也可以javac-d... 查看详情

java命令功能

...译成字节代码的class文件。javac可以隐式编译一些没有在命令行中提及的源文件。用-verbose选项可跟踪自动编译。 javap是Javaclass文件分解器,可以反编译,也可以查看java编译器生成的字节码。用于分解class文件。-help帮助-l输出 查看详情

我在linux下装jdk包后,配置了变量,测试javactest.java命令不报错也不输出,怎么回事

javac是编译命令,是将java文件编译成class文件的过程,在编译始末,如果没有异常是没有任何输出的。所以,楼主遇到这种情况不用慌,看看你的test.java同目录下有没有test.class参考技术A在Linux系统里,没有提示就是好的事情,说... 查看详情

命令行执行class文件的路径和包问题(代码片段)

...实际开发过程中,我们都是使用集成开发工具,很少使用命令行去执行java程序。今天在看书时,编写了书上的例子,照着书上使用命令行来执行(书上可能是为了简便),发现报错说找不到类文件,可是仔细检查类文件路径发... 查看详情

命令行中编译执行报错提示“找不到或无法加载主类”

  1、没有配置JAVA_HOME和CLASSPATH,只配了Path(D:ProgramJavajdk1.8.0_161in),验证可以编译执行;  2、java源文件路径:F:workspace0408HelloWorldsrc;  3、源文件如下:1packagetest;23publicclassHelloWorld{4publicstaticvoidmain(String 查看详情

java中设置classpathpathjava_home的作用?

...器等会在这些目录下寻找对应的.class文件2、path时用来找命令行执行文件的,操作系统或者其他软件会在这些目录下找对应的命令行执行文件3、JAVA_HOME是用来找JDK的 .PATH环境变量。作用是指定命令搜索路径,在命令行下面执... 查看详情

在c语言编译器目录下执行如下命令

bgiobjegavga,bgiobj命令将驱动程序egavga.bgi转换成egavga.obj的目标文件。这句话到底是什么意思啊?到底如何执行这个命令啊?还有,我在命令指示符中使用javac命令的时候,显示:error:cannotread****.java,这是为什么啊?到底javac命令... 查看详情

eclipse运行弹出ajavaexceptionhasoccurred.并报错exceptioninthread的解决方案

...的JVM上运行而产生的错误。1、解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,则在命令行中分别输入java-version和javac-version命令来查看版本是否一致。我用的是1.7.0_80。 2、版本一致却还是还是... 查看详情

java编译解释

...程序、包管理程序等。1、编译程序:javac.exe,对应的javac命令将Java源程序转换为字节码。javac[-选项]file.javafile.java:要编译的源文件[-选项]:可选项,javac中编译选项可以通过在命令提示符下输入javac或者javac-help查看。无任何可... 查看详情

请详细写出javac和java两个命令的使用方式

javaac和java两个命令的使用详解:一、javac命令javac用于编译Java文件,格式为:java[options][sourcefiles][@files]其中:options:命令行选项;sourcefiles:一个或多个要编译的源文件;@files:一个或多个对源文件进行列表的文件,有时候要... 查看详情

java环境变量配置原理解析

1.PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包... 查看详情

java在命令行中编译和运行java

...们把代码部署到Linux服务器上的时候,我们经常需要通过命令行编译和运行Java文件,网上关于这个的方法大多是通过javac-cpfilePath/jarName.jar  javaName.java这种方法。但是加入在f 查看详情