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

  1. 问题描述

我的eclipse里有一堆测试用的Java文件,今天打算写一段代码,于是随便点开一个文件,发现打不开。如图:155010_cMZr_1475616.jpg

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


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

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

然后我想,是不是文件名有问题,可是Test.java这种文件名怎么会有问题呢。

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

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

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

于是继续找问题。

新建一个类文件,把问题文件里的代码全部考到新文件里,保存,关闭文件,再打开,果然这个新文件也打不开了。


然后怀疑是不是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环境比较特殊吧。

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

转载于:https://my.oschina.net/u/1475616/blog/223145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值