Java 如何摆脱Checkstyle消息“文件不以换行符结尾”

Java 如何摆脱Checkstyle消息“文件不以换行符结尾”,java,windows,maven-2,netbeans,checkstyle,Java,Windows,Maven 2,Netbeans,Checkstyle,我正在使用Netbeans Windows中的Maven jar项目,该项目使用Maven Checkstyle插件创建Checkstyle报告 无论我做什么,我总是得到这样一条信息:文件不会以Java类文件的换行符结尾 我可以在Netbeans或Checkstyle中执行/配置哪些操作来删除该消息 所用软件的版本: WinXP SP3 Netbeans 6.7 RC1也适用于6.5 Maven 2.0.9 Maven Checkstyle插件2.2 Java 1.6更新14 在文件末尾添加一个

我正在使用Netbeans Windows中的Maven jar项目,该项目使用Maven Checkstyle插件创建Checkstyle报告

无论我做什么,我总是得到这样一条信息:文件不会以Java类文件的换行符结尾

我可以在Netbeans或Checkstyle中执行/配置哪些操作来删除该消息

所用软件的版本:

WinXP SP3 Netbeans 6.7 RC1也适用于6.5 Maven 2.0.9 Maven Checkstyle插件2.2 Java 1.6更新14
在文件末尾添加一个换行符 或 将CheckStyle配置为不在乎

您还必须告诉Maven Checkstyle插件使用您的Checkstyle配置文件

maven checkstyle插件 ${basedir}/yourCheckstyle.xml
有一种更简单的方法可以做到这一点。您可以指定抑制文件,而无需覆盖sun checkstyle配置文件:

org.apache.maven.plugins maven checkstyle插件 suppressions.xml config/sun_checks.xml 您的suppressions.xml位于:

Eclipse..Window>>首选项>>检查样式>>选择配置文件>>

单击属性按钮>>取消选中保护Checkstyle配置文件。 单击配置按钮>>搜索文件末尾的新行>>取消选中文件末尾新行旁边的复选框。
在我的情况下,这是一个错误的配置,该检查器的问题。默认情况下,它使用线端点的系统默认约定。我在windows上工作,项目使用的是unix风格的行尾。我不认为忽视警告是最好的策略,因此我所做的是:


当文件保存为UNIX格式而不是DOS格式时,我遇到了这个问题。或者,如果您在Unix中工作,则使用其他方法

为了解决这个问题,我使用了一个从UNIX格式转换到DOS格式的程序,并以该格式保存文件

在eclipse中:
文件->将行分隔符转换为->Windows

//以下是暴力解决方案:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;

/**
 *
 * @author hMueller
 */

public class UnixToWindowsEncoding {

//rewrites all .java files in Windows encoding
//a[0] = parent directory
//loops through all subdirectories and fixes whatever .java file it finds
public static void main(String[] a){
    String startdir = a[0];
    fixDir(startdir);

}

private static void fixDir(String dirname){
    try{
        File f = new File(dirname);
        File[] list = f.listFiles();
        for(int i = 0; i < list.length; i++){
            if(list[i].isDirectory()){
                fixDir(list[i].getAbsolutePath());
            }else{
                if(list[i].getName().endsWith(".java")){
                    ArrayList<String> l = new ArrayList<String>();
                    FileReader fr = new FileReader(list[i]);
                    BufferedReader br = new BufferedReader(fr);
                    String line = "";
                    while( (line = br.readLine()) != null){
                        l.add(line);
                    }
                    br.close();
                    fr.close();
                    list[i].delete();
                    FileWriter fwr = new FileWriter(list[i]);
                    for(String s : l){
                        fwr.write(s + "\r\n");
                    }
                    fwr.flush();
                    fwr.close();
                }
            }
        }
    }catch(Exception ioe){
        ioe.printStackTrace();
    }
}

}

在文件末尾添加一个换行符。在Windows上使用netbeans似乎不可能做到这一点。如果你能将光标移过最后一行,那么你就得到了它。如果仍然无法清除警告,请检查并确保在配置更改后再次运行Checkstyle。如果禁止更改配置文件,但允许更改禁止文件,则这非常好!。如果您可以更改配置文件,那么最好从配置文件中删除不需要的检查。更少的混乱和更好的性能。谢谢,对我来说这是解决方案。即使团队中的其他人在Windows上使用CR-LF行分隔符签出了他们的文件,它也可以工作。而这个代码片段可能会解决这个问题,确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。为我工作。非常感谢。