Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同IDE中Junit测试的不同结果_Java_Intellij Idea_Netbeans_Junit_Libs - Fatal编程技术网

Java 不同IDE中Junit测试的不同结果

Java 不同IDE中Junit测试的不同结果,java,intellij-idea,netbeans,junit,libs,Java,Intellij Idea,Netbeans,Junit,Libs,file.xml包含以下内容:©编码为UTF-8 使用libsjdom2-2.06、hamcrest-core-1.3和junit-4.11 当我在IntelliJ中运行此命令时,输出是这样的:) 当我在NetBeans中运行它时,输出是这样的:1 如果我将代码放到publicstaticvoidmain并运行它,那么一切都是正常的 如果我将FileReader更改为FileInputStream,则一切正常 如果我将FileReader更改为StringReader©则一切正常 可能是什么?读

file.xml包含以下内容:©编码为UTF-8

使用libsjdom2-2.06、hamcrest-core-1.3和junit-4.11

当我在IntelliJ中运行此命令时,输出是这样的:)

当我在NetBeans中运行它时,输出是这样的:1

如果我将代码放到publicstaticvoidmain并运行它,那么一切都是正常的

如果我将FileReader更改为FileInputStream,则一切正常

如果我将FileReader更改为StringReader©则一切正常


可能是什么?

读取文件时没有指定字符集,因此它使用JVM默认值,从IntelliJ运行的afaik通常默认为UTF-8,而Eclipse至少在Windows上默认为默认的非unicode字符集,例如西欧的Cp1252

您需要明确,如以下文件中所述:

此类的构造函数假定默认字符 编码和默认字节缓冲区大小是合适的。指明 您可以自己创建这些值,然后在 FileInputStream

换言之:

import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import java.io.FileReader;

public class Test1 {

    @org.junit.Test
    public void main() throws Exception {
        SAXBuilder sax = new SAXBuilder();
        Document doc = sax.build(new FileReader("resources/file.xml"));
        System.out.println(doc.getRootElement().getText());
    }
}
或者,让SAXBuilder为您处理这个问题,并给它一个InputStream。我相信——但我不是100%确定——这将决定XML声明的字符集:

new InputStreamReader(new FileInputStream("resources/file.xml"), StandardCharsets.UTF_8)

读取文件时没有指定字符集,因此它使用JVM默认值,从IntelliJ运行的afaik通常默认为UTF-8,而至少在Windows上,Eclipse默认为默认的非unicode字符集,例如西欧的Cp1252

您需要明确,如以下文件中所述:

此类的构造函数假定默认字符 编码和默认字节缓冲区大小是合适的。指明 您可以自己创建这些值,然后在 FileInputStream

换言之:

import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import java.io.FileReader;

public class Test1 {

    @org.junit.Test
    public void main() throws Exception {
        SAXBuilder sax = new SAXBuilder();
        Document doc = sax.build(new FileReader("resources/file.xml"));
        System.out.println(doc.getRootElement().getText());
    }
}
或者,让SAXBuilder为您处理这个问题,并给它一个InputStream。我相信——但我不是100%确定——这将决定XML声明的字符集:

new InputStreamReader(new FileInputStream("resources/file.xml"), StandardCharsets.UTF_8)

编码问题。为什么IntelliJ不受这些问题的影响编码问题。为什么IntelliJ不受这些问题的影响