Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 奇异变量初始化错误_Java_Eclipse - Fatal编程技术网

Java 奇异变量初始化错误

Java 奇异变量初始化错误,java,eclipse,Java,Eclipse,我对变量初始化有一个奇怪的问题 有以下代码: public void test() { StringBuilder buf; org.junit.Assert.assertFalse((buf = new StringBuilder("qwe3")).toString().isEmpty()); org.junit.Assert.assertEquals("", buf.toString()); // The local variable

我对变量初始化有一个奇怪的问题

有以下代码:

public void test()
    {
        StringBuilder buf;

        org.junit.Assert.assertFalse((buf = new StringBuilder("qwe3")).toString().isEmpty());
        org.junit.Assert.assertEquals("", buf.toString()); // The local variable buf may not have been initialized
    }
什么???变量已初始化,有什么问题

另外,当我将
org.junit.Assert.assertFalse
更改为我自己的本地方法时,错误就会消失

private static void assertFalse(final boolean o) throws Exception
    {

    }
如果有必要的话,我正在使用JDK1.7.051。类别代码为

注:现在报告为。 我已将您的问题缩减为MCVE:

package org.junit;
public class Assert {
  public static void assertTrue(boolean b) {}
}

package test;
import static org.junit.Assert.assertTrue;
public class Test {
  void test() {
    int i;
    assertTrue((i = 1) == 1);
    assertTrue(i == 1);
  }
}
只有在使用EclipseKeplerSR1编译时,我才能得到您的确切错误;使用
javac
编译不会复制它

此外,将
org.junit.Assert.assertTrue(布尔b)
更改为稍微不同的:

  • 包名
  • 类名
  • 方法名称
  • 方法签名
错误消失了
assertFalse
也有同样的问题,可能还有real
Assert
类中的其他方法


结论:错误在Eclipse编译器中。

这就是准确的代码,是逐字复制和粘贴的吗?你有另一台机器可以试着在上面复制吗?周围的代码有什么有趣的地方吗?(如果您能提供一个简短但完整的示例,我们可以逐字编译,这会有所帮助。)@JonSkeet我复制了它,它只需要一个JUnit依赖项。@JonSkeet,添加了到pastebin@MarkoTopolnik:您是否也在使用1.7.0_51?只是想知道确切的需求是什么…实际上与Eclipse编译无关。但好的一点,让我们看看javac。。。