1. 程式人生 > >eclipse java.lang.ArrayIndexOutOfBoundsException

eclipse java.lang.ArrayIndexOutOfBoundsException

 

最近在開啟java工程中的某個檔案時。eclipse報系統記憶體溢位錯誤。

重啟進入工作空間,報如下錯誤。

!SESSION 2018-09-21 10:08:32.970 -----------------------------------------------
eclipse.buildId=4.4.2.M20150204-1700
java.version=1.8.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.core.resources 2 10035 2018-09-21 10:08:38.090
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.

!ENTRY org.eclipse.e4.ui.workbench 4 0 2018-09-21 10:08:42.648
!MESSAGE 
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 16
	at com.ibm.icu.text.Bidi.resolveImplicitLevels(Bidi.java:3435)
	at com.ibm.icu.text.Bidi.setPara(Bidi.java:4094)
	at com.ibm.icu.text.Bidi.<init>(Bidi.java:5287)
	at com.ibm.icu.text.Bidi.<init>(Bidi.java:5174)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.getBidiLineSegments(JavaSourceViewer.java:573)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer$1.lineGetSegments(JavaSourceViewer.java:473)
	at org.eclipse.swt.custom.StyledTextListener.handleEvent(StyledTextListener.java:43)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1085)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1070)

 

從網上找各種解決方案:

1. 刪除eclispe.exe 所在目錄下 

/configuration/.settings/org.eclipse.ui.ide.prefs

 這樣eclipse是打開了,但是開啟原來的工作空間時還是報錯。

這個問題通過刪除該工作空間下的如下目錄 

 .metadata/.lock

刪除這個,並將後臺程序eclipse32.exe殺掉後,重新啟動eclispse,並使用php_workspace.

啟動到一半直接掛掉了。

仔細想想出問題的點,極有可能是開啟的某個工程有問題。

完了我就在php_workspace/.metadata下查詢含有這個工作空間的工作目錄。

發現該工作空間的工程目錄在如下目錄:

./.metadata/.plugins/org.eclipse.core.resources/.projects/

將該目錄下我覺得可能有問題的工程刪除掉。重新啟動eclipse,ok, 問題解決!

 

從這個發生問題的點,我得出一個結論:

匯入一個工程時,如果該工程下既有doc目錄, 又有java工程目錄。最好分開匯入。

不然eclipse在開啟java工程時,在點選工程中的類檔案,想通過快速連結到宣告處時(識別為java工程後,能通過ctrl+ 變數下出現的下劃線跳轉到宣告處),可能會發生意想不到的問題。

 

參考連結:

https://stackoverflow.com/questions/19023367/eclipse-startup-exception-java-lang-arrayindexoutofboundsexception-in-choosewor

https://stackoverflow.com/questions/7465793/eclipse-workspace-in-use-or-cannot-be-created-chose-a-different-one