vscode-java icon indicating copy to clipboard operation
vscode-java copied to clipboard

Java Formatter is broken somehow in my workspace

Open ziroc opened this issue 3 years ago • 6 comments

So I played around trying to use a custom formatter for Java. At some point my workspace broke and now I cannot format any Java code. I tried to remove every setting related to formatting. I used "clean the Java language server workspace" I deleted workspace caches in %userprofile%\AppData\Roaming\Code

Nothing works. Now I get the window "There is no formatter for Java installed" whenever I try to format some Java file.

I tried to set up a formater again. I added the file, used these settings: "java.format.settings.url": ".vscode/GoogleStyle.xml", And now I can run "Open Java Formatter Setting Wth Preview ", but I still cannot format my code.

Also I created another small project with one Java file and there the formatter works.

Environment
  • Operating System: Windows 11
  • JDK version: 11 and 17
  • Visual Studio Code version: 1.71.2
  • Java extension version: 1.11.0

ziroc avatar Oct 04 '22 13:10 ziroc

@CsCherrYY

jdneo avatar Oct 08 '22 02:10 jdneo

Now I get the window "There is no formatter for Java installed" whenever I try to format some Java file.

two possible reasons:

  1. java.format.enabled is set to false
  2. The java extension is not activated yet or failed to activate. You can check (hover on) the language status in the status bar when you open a java file:

image

CsCherrYY avatar Oct 08 '22 06:10 CsCherrYY

Yes, I suspect the Java extension is not properly activated, but I cannot find exactly the problem. It seems to recognize maven projects, java files, method outlines inside files, etc.

image

image

ziroc avatar Oct 10 '22 09:10 ziroc

I can see some diagnostics with Java type in your screenshot, and they should be reported by java extension. Can you use other features, such as go to definition and trigger auto completion (ctrl+space)? Or a sample project would be very helpful.

CsCherrYY avatar Oct 11 '22 01:10 CsCherrYY

Ctrl+click works on most things, not everything. Auto completion also works. But I cannot use formatters still.

Sorry I cannot provide the project that has this problem. On smaller test projects, there is no issue.
I looked at the Java language server logs, and there is this persistent error - on every opening of the project:

!ENTRY org.eclipse.jdt.ls.core 4 0 2022-10-04 17:05:47.731
!MESSAGE Offset > length: 1039 > 757
!STACK 0
org.eclipse.jface.text.BadLocationException: Offset > length: 1039 > 757
	at org.eclipse.jface.text.ListLineTracker.getLineNumberOfOffset(ListLineTracker.java:141)
	at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:155)
	at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:872)
	at org.eclipse.jdt.ls.core.internal.handlers.JsonRpcHelpers.toLine(JsonRpcHelpers.java:156)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.convertRange(WorkspaceDiagnosticsHandler.java:425)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnostic(WorkspaceDiagnosticsHandler.java:399)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.lambda$3(WorkspaceDiagnosticsHandler.java:383)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnosticsArray(WorkspaceDiagnosticsHandler.java:385)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:324)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:239)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer$2.run(JDTLanguageServer.java:275)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

!ENTRY org.eclipse.core.jobs 4 2 2022-10-04 17:05:47.731
!MESSAGE An internal error occurred during: "Initialize workspace".
!STACK 0
java.lang.NullPointerException: Cannot load from int array because "startPos" is null
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.convertRange(WorkspaceDiagnosticsHandler.java:426)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnostic(WorkspaceDiagnosticsHandler.java:399)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.lambda$3(WorkspaceDiagnosticsHandler.java:383)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.toDiagnosticsArray(WorkspaceDiagnosticsHandler.java:385)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:324)
	at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceDiagnosticsHandler.publishDiagnostics(WorkspaceDiagnosticsHandler.java:239)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer$2.run(JDTLanguageServer.java:275)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

ziroc avatar Oct 11 '22 13:10 ziroc

I have exact problem in workspace with multi folder, java formatting is not working. If i open same folder in new VS window it works as expected.

{
  "editor.formatOnSave": true,
  "java.format.settings.url": "eclipse-formatter.xml"
}

sivo1981 avatar Nov 26 '25 09:11 sivo1981