eclipse Failed to create the part's controls 问题的解决

  1. 问题描述

个人eclipse里有一堆测试用的Java文件,今天打算写一段代码,因而随便点开一个文件,发现打不开。如图:java

虽然在eclipse里打不开,可是用notepad++倒是能打开的,这说明文件没有损坏。eclipse


之前没遇到过这个错误。不知道怎么解决。函数

因而点开Details看了一下,nullPointerException...反正是一堆错误的信息,都是eclipse内部的异常,没啥用。测试

而后我想,是否是文件名有问题,但是Test.java这种文件名怎么会有问题呢。ui

度娘!发现没人遇到相似的问题。spa

StackOverflow!那上有人遇到了这个问题,有人说switch workspace一下会好,有人说把plugins文件夹里的大部分文件删掉。我试了一下switch workspace,没用,仍是打不开。插件

至于插件,不仍是不想动那个文件夹。code

因而继续找问题。ip

新建一个类文件,把问题文件里的代码所有考到新文件里,保存,关闭文件,再打开,果真这个新文件也打不开了。编译器


而后怀疑是否是jdk8插件的问题,由于这个类里有写jdk8用到的一些东西,好比stream,是否是这里出了问题。

查看build path,发现配置有点问题,有个地方选了jdk7(具体哪一个地方我忘了),把编译器和执行环境调整到jdk8以后,文件仍是打不开。


而后我把文件里的代码一段一段的考到新文件,考到哪里出问题,就分析那一段。

出问题的是这个函数:

@SuppressWarnings("unused")
	private static void testParallelStream() {
		long t0 = System.nanoTime();
		// 初始化一个范围100万整数流,求能被2整除的数字,toArray()是终点方法
		int a[] = IntStream.range(0, 1_000_000).filter(p -> p % 2 == 0).toArray();
		long t1 = System.nanoTime();
		// 和上面功能同样,这里是用并行流来计算
		int b[] = IntStream.range(0, 1_000_000).parallel().filter(p -> p % 2 == 0).toArray();
		long t2 = System.nanoTime();
		// 我本机的结果是serial: 0.06s, parallel 0.02s,证实并行流确实比顺序流快
		System.out.printf("serial: %.2fs, parallel %.2fs%n", (t1 - t0) * 1e-9, (t2 - t1) * 1e-9);
	}

我觉得是开头的注释在解析的时候出现的问题,而后把注释删掉了,可是仍是打不开文件。

而后把函数里的内容所有注释,这下能够打开文件了。

看来问题出在函数体里。

里面的汉语注释应该没什么问题,那就一段一段的测吧

而后发现,是这一句的问题:

int a[] = IntStream.range(0, 1_000_000).filter(p -> p % 2 == 0).toArray();

这里用到了jdk7和jdk8的特性,我把数字里的下划线去掉,发现文件能够打开了。

查看另外一个打不开的文件,一样有这种下划线式的数字表示法。去掉下划线,就能够打开了。


可能别人在eclipse里这样写就不会出问题,那就是个人eclipse环境比较特殊吧。

问题解决了,仍是挺好的。

相关文章
相关标签/搜索