2012-03-07 3 views
2

컴파일 중에이 스택 오류를 일으키는 원인은 무엇입니까 ?? 이클립스 I 2+ GWT 사용하고 3.7gwt 컴파일 오류

[ERROR] 예기치 내부 컴파일러 에러 `java.lang.ArrayIndexOutOfBoundsException : 986,507 com.google.gwt.dev.asm.ClassReader.readUnsignedShort (ClassReader 에서. java : 1850) (comReader.java:484) com.google.gwt.dev.asm.ClassReader.accept com.google.gwt.dev.javac.TypeOracleMediator $ TypeData.getCollectClassData (TypeOracleMediator.java:147) ( ) com.google.gwt.dev.javac.TypeOracleMediator.addNewTypes (TypeOracleMediator.java : com.google.gwt.dev.javac.CompilationState.assimilateUnits (CompilationState.java:164) 에서 com.google.gwt.dev.javac.TypeOracleMediatorFromSource.addNewUnits (TypeOracleMediatorFromSource.java:52)에서 390) 에서 com.google.gwt.dev.javac.CompilationState. com.google에서 com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom (CompilationStateBuilder.java:450)에서 (CompilationState.java:82) .gwt.dev.javac.CompilationStateBuilder.buildFrom com.google.gwt.dev.cfg.ModuleDef.getCompilationState (ModuleDef.java:360) com.google.gwt.dev에서 에서 (CompilationStateBuilder.java:370) . 프리 컴 파일 .p 다시 컴파일 (Precompile.java:252) at com.google.gwt.dev.Precompile.precompile (Precompile.java:233) com.google.gwt.dev.Precompile.precompile (Precompile.java:145) at com.google.gwt.dev.Compiler.run (Compiler.java:232) at com.google.gwt.dev.Compiler.run (Compiler.java:198) at com.google.gwt.dev.Compiler $ 1 .RUN com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger에서 com.google.gwt.dev.CompileTaskRunner.doRun (CompileTaskRunner.java:88)에서 (Compiler.java:170) (CompileTaskRunner.java:82) com.google.gwt.dev.Compiler.main (Compiler.java:177) 종료 중 PersistentUnitCache 스레드 "UnitWriteThread"스레드의 예외 java.lang.NullPointe com.google.gwt.dev.javac.CompiledClass.writeObject (CompiledClass.java:163) 태양에서 에서 com.google.gwt.dev.util.DiskCache.transferToStream (DiskCache.java:183) 에서 rException. java.io.ObjectStreamClass.invokeWriteObject (알 소스)에 java.lang.reflect.Method.invoke (알 소스)에 sun.reflect.DelegatingMethodAccessorImpl.invoke (알 소스)에 reflect.GeneratedMethodAccessor22.invoke (알 소스) java.io.ObjectOutputStream.writeArray에서 java.io.ObjectOutputStream.writeObject0 (알 소스)에 java.io.ObjectOutputStream.writeOrdinaryObject (알 소스)에 java.io.ObjectOutputStream.writeSerialData (알 소스) (알에서 에스 ource) java.io.ObjectOutputStream.writeOrdinaryObject에서 java.io.ObjectOutputStream.writeSerialData (알 소스)에 java.io.ObjectOutputStream.defaultWriteFields에서 java.io.ObjectOutputStream.writeObject0 (알 소스) (알 소스)에서 에서 java.io.ObjectOutputStream의 java.io.ObjectOutputStream.writeSerialData (알 소스)에 java.io.ObjectOutputStream.defaultWriteFields에서 java.io.ObjectOutputStream.writeObject0 (알 소스) (알 소스)에서 (알 소스) .writeOrdinaryObject (알 수없는 소스) at java.io. com.google.gwt.dev.javac.PersistentUnitCache $ UnitWriter.run (PersistentUnitCache.java:226)

답변

0

에서 java.io.ObjectOutputStream.writeObject (알 수없는 소스)에서 ObjectOutputStream.writeObject0 (알 수없는 소스) 이 코드가 정확히 어디에서 오는 것인지 알 수 있습니다. 실제로 배열이없는 배열에서 인덱스에 액세스하려고합니다.

0

확실히 컴파일러 오류입니다. asm code에서 - 범위를 벗어나는 배열 변수는 다음과 같습니다. 구문 분석 될 비표준 클래스입니다. 이 필드는 Attribute 서브 클래스를위한 필드이며, 일반적으로 클래스 생성자 또는 어댑터에서 필요하지 않습니다.

불일치 bin/lib jar 또는 실행 파일이 있습니까? 문제가되는 코드를 익명 또는 내부 클래스로 지역화 할 수 있습니까?

0

gwt-unitCache 폴더를 삭제하고 gwt-compile을 다시 실행 해보십시오. 이것은 나를 위해 그것을 고정.

0

Eclipse Luna + GWT 2.7.0 + Java 1.7 + Maven 플러그인 3.1.1을 사용하여 매우 비슷한 문제가 발생했습니다. 나는 슈퍼 dev-mode로 GWT를 컴파일하려했지만, 항상 java.lang.ArrayIndexOutOfBoundsException을 가지고있다. 필자는 컴파일러가 (테스트 된 클래스처럼) 컴파일되지 않아야하는 클래스를 컴파일하려고하기 때문에 발생한다고 생각하지만 잘 모르겠습니다.

단계는 내가이 문제를 해결하기 위해 나섭니다 :

  1. 청소 대상 폴더를 배포 어셈블리
    (오른쪽 이클립스 프로젝트를 클릭에서
  2. 제거 테스트 폴더 -> "배포 총회"- > 테스트 폴더를 선택하고 "제거"를 클릭하십시오.
  3. GWT 플러그인을 사용하여 컴파일 : 이클립스에서 프로젝트를 선택하십시오. -> "GDT 풀다운"버튼 (Google 플러그인 설치) -> "GWT 프로젝트 컴파일 "-> 컴파일하려는 모듈을 선택하고"컴파일 "을 누르십시오.

마지막 단계는 실제로 저를 위해 실패했습니다. 그래서 그것이 도움이되는지 아닌지 확실하지 않습니다.

마지막으로, 나는 다시 컴파일하고 오류가 사라졌습니다.

누군가가 도움이되기를 바랍니다.