redhat-developer / redhat-developer/vscode-java

Extension causes `bad class file` and `ClassNotFoundException` in Maven build

Ouverte
#322 5 commentaires 3 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug ls-error/crash
Langage dominant
TypeScript
Étoiles
2.3k
Forks
547
Merge moyen
20 h 1 min
PR mergées (30 j)
11

Description

I have a Maven project with submodules. When I open it in VS Code with this extension installed everything seems to work perfectly (code completion, javadoc, go to definition...). But when I run mvn clean install externally extension starts throwing tens of BadLocationExceptions (displayed in Output tab).

Moreover maven build fails! I can see some bad class file errors from maven-compiler-plugin and bellow TypeNotPresentException caused by ClassNotFoundException from some test run by maven-surefire-plugin. When I close VS Code Maven build works.

Environment
  • Operating System: Window 10
  • JDK version: 1.8.0_112
  • Visual Studio Code version: 1.17.0
  • Java extension version: 0.11.0
Steps To Reproduce
  1. clone https://github.com/vojtechhabarta/typescript-generator.git
  2. open folder in VS Code
  3. check that it works
  4. run mvn clean install
  5. build fails with TypeNotPresentException in tests

BadLocationException in VS Code Output window:

org.eclipse.jface.text.BadLocationException
	at org.eclipse.jface.text.ListLineTracker.getLineOffset(ListLineTracker.java:191)
	at org.eclipse.jface.text.AbstractLineTracker.getLineOffset(AbstractLineTracker.java:157)
	at org.eclipse.jface.text.AbstractDocument.getLineOffset(AbstractDocument.java:873)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.convertRange(WorkspaceDiagnosticsHandler.java:164)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnostic(WorkspaceDiagnosticsHandler.java:144)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.lambda$0(WorkspaceDiagnosticsHandler.java:129)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnosticsArray(WorkspaceDiagnosticsHandler.java:131)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.visit(WorkspaceDiagnosticsHandler.java:115)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:64)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:48)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.resourceChanged(WorkspaceDiagnosticsHandler.java:62)
	at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:299)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:289)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:152)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:374)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1469)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:157)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)

Sample error in maven-compiler-plugin:

cz/habarta/typescript/generator/ext/AxiosClientExtensionTest.java:[4,39] cannot access cz.habarta.typescript.generator.Input
  bad class file: ...\typescript-generator\typescript-generator-core\target\classes\cz\habarta\typescript\generator\Input.class
    unable to access file: ...\typescript-generator\typescript-generator-core\target\classes\cz\habarta\typescript\generator\Input.class (The system cannot find the file specified)
    Please remove or make sure it appears in the correct subdirectory of the classpath.

Sample error from test in maven-surefire-plugin:

java.lang.TypeNotPresentException: Type ImmutableRectangle not present
	at sun.reflect.annotation.TypeNotPresentExceptionProxy.generateException(TypeNotPresentExceptionProxy.java:46)
	at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:84)
	at com.sun.proxy.$Proxy24.as(Unknown Source)
	at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.findSerializationType(JacksonAnnotationIntrospector.java:758)
	at com.fasterxml.jackson.databind.AnnotationIntrospector.refineSerializationType(AnnotationIntrospector.java:843)
	at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:152)
	at cz.habarta.typescript.generator.parser.Jackson2Parser.getBeanHelper(Jackson2Parser.java:243)
	at cz.habarta.typescript.generator.parser.Jackson2Parser.parseBean(Jackson2Parser.java:70)
	at cz.habarta.typescript.generator.parser.Jackson2Parser.parseClass(Jackson2Parser.java:63)
	at cz.habarta.typescript.generator.parser.ModelParser.parseQueue(ModelParser.java:67)
	at cz.habarta.typescript.generator.parser.ModelParser.parseModel(ModelParser.java:36)
	at cz.habarta.typescript.generator.TypeScriptGenerator.generateTypeScript(TypeScriptGenerator.java:51)
	at cz.habarta.typescript.generator.TypeScriptGenerator.generateTypeScript(TypeScriptGenerator.java:43)
	at cz.habarta.typescript.generator.TypeScriptGenerator.generateTypeScript(TypeScriptGenerator.java:38)
	at cz.habarta.typescript.generator.ImmutablesTest.testImmutables(ImmutablesTest.java:17)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Caused by: java.lang.ClassNotFoundException: ImmutableRectangle
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
	at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:439)
	at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:420)
	at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:349)
	at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
	at java.lang.Class.createAnnotationData(Class.java:3521)
	at java.lang.Class.annotationData(Class.java:3510)
	at java.lang.Class.getAnnotation(Class.java:3415)
	at cz.habarta.typescript.generator.parser.JaxrsApplicationParser.tryParse(JaxrsApplicationParser.java:78)
	at cz.habarta.typescript.generator.parser.ModelParser.parseQueue(ModelParser.java:55)
	... 29 more

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le problème en ouvrant typescript-generator dans VS Code et en exécutant mvn clean install, puis comparez le build avec VS Code fermé. Commencez par WorkspaceDiagnosticsHandler.convertRange et les échecs signalés de AxiosClientExtensionTest et ImmutablesTest ; c’est terminé lorsque le build Maven réussit avec l’extension active et qu’aucune BadLocationException n’apparaît.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java, typescript, vscode
Domaine
build-system, devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.