zoukankan      html  css  js  c++  java
  • Maven打包编译错误工作区间设置编码格式gbk可以utf-8不可以

    转自:https://blog.csdn.net/wolf_love666/article/details/52593483

    问题:Maven打包编译错误工作区间设置编码格式gbk可以utf-8不可以 
    错误如下: 
    [INFO] ———————————————————————— 
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project ins-service: Compilation failure 
    [ERROR] javac: �Ҳ����ļ�: E:SVN320160918JunKang_DevJKDS5源代�?后端v1.0parentins-servicesrcmainjavacomjunkenumsFileUploadEnum.java 
    [ERROR] �÷�: javac 
    [ERROR] -help �����г����ܵ�ѡ�� 
    [ERROR] -> [Help 1] 
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
    [ERROR] Re-run Maven using the -X switch to enable full debug logging. 
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles: 
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command 
    [ERROR] mvn -rf :ins-service 
    解决办法: 
    根据出现的乱码发现应该推测到格式编码问题,所以验证下,改工作区间编码格式为gbk呀呀,竟然好了。再改会utf-8格式呀呀又出错了,很奇怪,推测问题是两种: 
    一种是原来的gbk现在utf-8但是很明显问题不对路,但是还是提供一种解决方式将gbk代码改成utf-8代码 
    代码如下:

    package org.xc.binny;
    
    import java.io.File;
    import java.util.Collection;
    
    import org.apache.commons.io.FileUtils;
    
    public class GBK2UTF8App {
        /**
         * 将制定目录下的所有Java源文件的编码格式从GBK修改为UTF-8
         */
        public static void main(String[] args) throws Exception {
            //GBK编码格式源码路径
            String srcDirPath = "C:\Users\Wolf\Desktop\src";
    //      //转为UTF-8编码格式源码路径E:SVN320160918JunKang_DevJKDS5源代码后端v1.0parentins-servicesrcmainjavacomjunk
            String utf8DirPath =  "C:\Users\Wolf\Desktop\src";
        //      String srcDirPath = "E:\SVN3\20160918JunKang_Dev\JKDS\05源代码\后端\v1.0\parent\ins-common\src\main\java\com\common";
    //      //转为UTF-8编码格式源码路径E:SVN320160918JunKang_DevJKDS5源代码后端v1.0parentins-servicesrcmainjavacomjunk
    //      String utf8DirPath = "E:\SVN3\20160918JunKang_Dev\JKDS\05源代码\后端\v1.0\parent\ins-common\src\main\java\com\common";
    //      
    
            //获取所有java文件
            Collection<File> javaGbkFileCol =  FileUtils.listFiles(new File(srcDirPath), new String[]{"java"}, true);
            int count=0;
            for (File javaGbkFile : javaGbkFileCol) {
    
                //UTF8格式文件路径
                String utf8FilePath = utf8DirPath+javaGbkFile.getAbsolutePath().substring(srcDirPath.length());
                //使用GBK读取数据,然后用UTF-8写入数据
    //          FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK"));     
                FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK"));     
    
                count++;
                System.out.println("执行文件次数"+count);
            }
    
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    jar包:commons-io-1.4.jar 
    第二种是maven编译的问题: 
    搜罗pom文件关于编译的问题原来: 
    maven中的plugins 和 pluginManagement、dependencies和dependencyManagement。这两个后者都需要放置在父文件里面,前者在子文件里。他们区别是: 
    maven会在当前项目中加载plugins声明的插件;

    pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,maven不会加载该插件,pluginManagement声明可以被继承。

    pluginManagement的一个使用案例是当有父子项目的时候,父项目中可以利用pluginManagement声明子项目中需要用到的插件, 之后,当某个或者某几个子项目需要加载该插件的时候,就可以在子项目中plugins节点只配置 groupId 和 artifactId就可以完成插 件的引用。 
    pluginManagement主要是为了统一管理插件,确保所有子项目使用的插件版本保持一致。 
    哈哈问题找到了那么改一下吧: 
    将 
    <pluginManagement> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    <encoding>utf-8</encoding> 
    </configuration> 
    </plugin> 
    ...... 
    </plugins> 
    <pluginManagement> 
    改成: 
    <build> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    <encoding>utf-8</encoding> 
    </configuration> 
    </plugin> 
    ...... 
    </plugins> 
    <build>
     
    那么原因到底是什么呢为啥呢gbk可以通过,utf-8不可以呢 
    由于系统默认编码是GBK,因此默认可以gbk通过编译。

  • 相关阅读:
    Node.js的Formidable模块的使用
    call 和 apply方法解析
    JavaScript 数组去重方法总结
    Javascript的this用法
    ubuntu虚拟机安装简单pxe服务器
    [LeetCode]Fraction to Recurring Decimal
    [LeetCode]Largest Number
    [LeetCode]Single Number II
    Git & Github使用总结
    vim配置总结
  • 原文地址:https://www.cnblogs.com/sharpest/p/8492218.html
Copyright © 2011-2022 走看看