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環境比較特殊吧。

問題解決了,仍是挺好的。

相關文章
相關標籤/搜索